Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Ini Datei erstellen und auslesen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Emporea1997



Anmeldungsdatum: 07.07.2011
Beiträge: 58

BeitragVerfasst am: 01.08.2011, 21:03    Titel: Ini Datei erstellen und auslesen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.08.2011, 21:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 01.08.2011, 21:43    Titel: Antworten mit Zitat

Es wird doch im Code alles Schritt für Schritt erklärt(in den Kommentaren). zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.08.2011, 22:49    Titel: Antworten mit Zitat

Den habe ich geschrieben, der muss gut erklärt sein. Zunge rausstrecken
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Emporea1997



Anmeldungsdatum: 07.07.2011
Beiträge: 58

BeitragVerfasst am: 01.08.2011, 22:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.08.2011, 23:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Emporea1997



Anmeldungsdatum: 07.07.2011
Beiträge: 58

BeitragVerfasst am: 01.08.2011, 23:08    Titel: Antworten mit Zitat

und wie mache ich dann etwas in eine variable?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.08.2011, 23:10    Titel: Antworten mit Zitat

"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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 01.08.2011, 23:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Emporea1997



Anmeldungsdatum: 07.07.2011
Beiträge: 58

BeitragVerfasst am: 01.08.2011, 23:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 02.08.2011, 00:18    Titel: Antworten mit Zitat

Empora, schaue dir lieber ein paar Tutorials auf freebasic-portal.de an, besonders die Anfängerkurse von Sebastian. zwinkern

Im Übrigen sind dies auch keine Scripte sondern das ist FreeBasic Sourcecode. Scripten und Programmieren ist nicht das Gleiche. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 02.08.2011, 00:39    Titel: Antworten mit Zitat

Emporea1997 hat Folgendes geschrieben:
kann mal einer ein beispiel script coden wo drin steht dass er ne ini erstellt und rein schreibt X = 1

Code:
SetValue("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
Benutzer-Profile anzeigen Private Nachricht senden
Emporea1997



Anmeldungsdatum: 07.07.2011
Beiträge: 58

BeitragVerfasst am: 05.08.2011, 17:15    Titel: Antworten mit Zitat

ok das habe ich jetzt verstanden und es klappt auch. nur wie kann ich jetzt den namen der datei ändern?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 05.08.2011, 17:17    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Emporea1997



Anmeldungsdatum: 07.07.2011
Beiträge: 58

BeitragVerfasst am: 05.08.2011, 17:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz