Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Emporea1997
Anmeldungsdatum: 07.07.2011 Beiträge: 58
|
Verfasst am: 01.08.2011, 21:03 Titel: Ini Datei erstellen und auslesen |
|
|
Hallo!
Ich bin noch anfänger und verstehe diesen script nicht und weiß auch nicht wie ich den in mein Programm einbringen soll.
Ich wäre dankbar wenn einer mir das erklären könnte (schritt für schritt)
Code: | #Define DefaultGroup Mid(Command(0), InstrRev(Command(0), "\") + 1) ' Standardgruppe, wenn kein Gruppenname übergeben wird. In diesem Beispiel entspricht sie dem Namen der EXE-Datei.
' INI-Einstellungen (Deklarationen können auch gerne durch ein einfaches #include "windows.bi" ersetzt werden)
Declare Function GetPrivateProfileStringB Lib "kernel32" Alias "GetPrivateProfileStringA" (Byval lpApplicationName As String, Byval lpKeyName As String, Byval lpDefault As String, Byval lpReturnedString As String, Byval nSize As Long, Byval lpFileName As String) As Long
Declare Function WritePrivateProfileStringB Lib "kernel32" Alias "WritePrivateProfileStringA" (Byval lpApplicationName As String, Byval lpKeyName As String, Byval lpString As String, Byval lpFileName As String) As Long
'Benötigte Funktionen
Function GetValue(Key As String, Default As String = "", Group As String = DefaultGroup, Filename As String = Command(0) + ".ini") As String
Dim TmpRetStr As String * 1280
Dim RetVal As Long
RetVal = GetPrivateProfileStringB(Group, Key, Default & Chr(0), TmpRetStr, Len(TmpRetStr), Filename)
Return Left(TmpRetStr, RetVal)
End Function
Sub SetValue(Key As String, Value As String, Group As String = DefaultGroup, Filename As String = Command(0) + ".ini")
WritePrivateProfileStringB Group, Key, Value, Filename
End Sub
' Testwerte aus der Standard-Gruppe. Dazu muss in der INI-Datei eine Gruppe mit dem Namen der Exe-Datei (z.B. [MeinProgramm.exe]) existieren, bzw. diese wird durch SetValue direkt angelegt.
' Mit einer zuvor leeren INI-Datei sollte die Ausgabe also "Blau", "Rot" sein.
Print GetValue("Farbe", "Blau")
SetValue("Farbe", "Rot")
Print GetValue("Farbe")
SetValue("Farbe", "")
' Testwerte aus einer anderen Gruppe
SetValue("Farbe", "Andere Farbe", "UnterGruppe")
Print GetValue("Farbe", , "UnterGruppe")
Sleep
|
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.08.2011, 21:25 Titel: |
|
|
Und was verstehst du daran jetzt nicht? Weißt du, was eine INI-Datei ist? Weißt du, wie eine INI-Datei aussieht? Weißt du, warum du in eine INI-Datei schreiben oder daraus lesen willst? Hast du dir die Beispieldatei angeschaut, die das Programm erzeugt? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 01.08.2011, 21:43 Titel: |
|
|
Es wird doch im Code alles Schritt für Schritt erklärt(in den Kommentaren).  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.08.2011, 22:49 Titel: |
|
|
Den habe ich geschrieben, der muss gut erklärt sein.
Und der Artikel, aus dem er kopiert wurde, erklärt sogar, wie INI-Dateien aufgebaut sind, wodurch ich eigentlich keine potenziellen Verständnisprobleme mehr entdecken kann... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Emporea1997
Anmeldungsdatum: 07.07.2011 Beiträge: 58
|
Verfasst am: 01.08.2011, 22:56 Titel: |
|
|
ja für euch erfahrene Programmierer mag es einfach sein da irgendwas mit declare irgendwas zu verstehen. aber für mich ist das fast unverständlich.
und ja ich weiß was eine INI ist und was sie macht und wofür sie gut ist. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.08.2011, 23:03 Titel: |
|
|
Wenn du die Zeilen nicht verstehst, ignoriere sie einfach. Alles was du brauchst, sind die Aufrufe von GetValue und SetValue, und die sollten nunmal wirklich selbsterklärend sein. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Emporea1997
Anmeldungsdatum: 07.07.2011 Beiträge: 58
|
Verfasst am: 01.08.2011, 23:08 Titel: |
|
|
und wie mache ich dann etwas in eine variable? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.08.2011, 23:10 Titel: |
|
|
"Print" durch "Variable =" ersetzen. So wie man Funktionsrückgabewerte halt verwendet. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 01.08.2011, 23:13 Titel: |
|
|
Ich nehme an, du verstehst nicht woher die Funktionen kommen, die deklariert werden. Nehmen wir mal eins als Beispiel raus:
Code: | Declare Function GetPrivateProfileStringB Lib "kernel32" Alias "GetPrivateProfileStringA" (Byval lpApplicationName As String, Byval lpKeyName As String, Byval lpDefault As String, Byval lpReturnedString As String, Byval nSize As Long, Byval lpFileName As String) As Long |
Die Funktion 'GetPrivateProfileStringB' mit dem gegebenen Rückgabewert und den Parametern (das solltest du ja soweit verstehen) kommt aus der Windows-Bibliothek 'kernel32' (kernel32.dll) und dort heißt die Funktion, die wir im Programm als 'GetPrivateProfileStringB' bezeichnen eigentlich 'GetPrivateProfileStringA' (der Aliasname muss nicht unbedingt anders sein, das dient dazu um Namenskonflikte zu vermeiden). Die Parameter und der Rückgabewert sind dabei durch die WinAPI vorgegeben.
Es werden also einfach Funktionen aus einer anderen Lib dazugeladen, damit man sie im eigenen Programm nutzen kann. Was die Funktionen machen, muss man dann eben in der WinAPI nachlesen. |
|
Nach oben |
|
 |
Emporea1997
Anmeldungsdatum: 07.07.2011 Beiträge: 58
|
Verfasst am: 01.08.2011, 23:52 Titel: |
|
|
kann mal einer ein beispiel script coden wo drin steht dass er ne ini erstellt und rein schreibt X = 1
und ne bedingung und zwar er soll am anfang auch die datei auslesesn und wenn X = 1 ist dann soll er Y = 1 hin schreiben.
damit sollte ich es verstehen. ich brauche immer ein paar beispiele... udn noch eine frage die aber nicht viel hiermit zu tun hat.
ich habe den taschenrechener bei den beispielen von sgui gefunden. den wollte ich in ein programm von mir einbinden. es würde auch alles klappen jedoch ist es so dass ich einen button habe der dann die aktuelle oberfläche (ohne taschenrechner) cleant und dann den taschenrechner lädt. das geht aber nur so halb. denn das textfeld was da ist ist in einer sub am anfang oder so. davon habe ich leider keine ahnung. und das stört eben weil es auch wenn der taschenrechner nicht aktiv ist angezeigt wird. ich habe schon probiert die sub einfach an die stele zu machen wo der taschenrechenr eigentlich aufgerufen werden soll, aber dann kommt irgendwas mit illegal argument oder so. könnt ihr mir sagen wie ich das hinbekomme? |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 02.08.2011, 00:18 Titel: |
|
|
Empora, schaue dir lieber ein paar Tutorials auf freebasic-portal.de an, besonders die Anfängerkurse von Sebastian.
Im Übrigen sind dies auch keine Scripte sondern das ist FreeBasic Sourcecode. Scripten und Programmieren ist nicht das Gleiche.  |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 02.08.2011, 00:39 Titel: |
|
|
Emporea1997 hat Folgendes geschrieben: | kann mal einer ein beispiel script coden wo drin steht dass er ne ini erstellt und rein schreibt X = 1 |
.. war das jetzt so schwer?
Emporea1997 hat Folgendes geschrieben: | und ne bedingung und zwar er soll am anfang auch die datei auslesesn und wenn X = 1 ist dann soll er Y = 1 hin schreiben. |
Code: | If GetValue("X") = "1" Then SetValue("Y", "1") | .. den Rest kriegst du selber hin - wenn man nichts selber macht lernt man nichts _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
Emporea1997
Anmeldungsdatum: 07.07.2011 Beiträge: 58
|
Verfasst am: 05.08.2011, 17:15 Titel: |
|
|
ok das habe ich jetzt verstanden und es klappt auch. nur wie kann ich jetzt den namen der datei ändern? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 05.08.2011, 17:17 Titel: |
|
|
Genau dafür gibt es den vierten "Filename"-Parameter. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Emporea1997
Anmeldungsdatum: 07.07.2011 Beiträge: 58
|
Verfasst am: 05.08.2011, 17:21 Titel: |
|
|
habe ich probiert dass ich da ein string einfüge jedoch erstellt er dann entweder keine datei oder immer noch mit dem namen der eigentlichen datei |
|
Nach oben |
|
 |
|