Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Daten aus .Ini Speicher auslesen (https://www.delphipraxis.net/174334-daten-aus-ini-speicher-auslesen.html)

Astobix 17. Apr 2013 20:52

Daten aus .Ini Speicher auslesen
 
Hey,

zuallererst möchte ich sagen, dass ich ein ziemlicher Neuling bin und heute erst damit angefangen habe, mich in das Speichern von Datein (vorerst erstmal .ini) einzuarbeiten.

Ich bin dabei ein Quizprogramm zu programmieren, in dem man selber seine Quizze erstellen kann. Um das spielen den Quizze geht es mir gerade noch nicht einmal, da ich noch nicht so weit bin. Ich haben ein Hauptmenü, von dem man den "Quizeditor" aufruft (neue Form). Das geschieht über ein Popopmenu, bei dem man zwischen 5 Quizzen (Quasi die Speicherplätze) auswählt. Der Editor besteht lediglich aus 5 Labels (Frage und 4 Antworten) und 5 Memos zum editieren der Fragen / antworten. Zudem gibt es 3 Buttons: Beenden (speichert nichts und schließt die Form), Speichern und Beenden (Speichert und schließt die Form) und Speichern und weiter (Speichert die Frage und geht über zur nächsten Frage des Quizzes).

Das Speichern habe ich folgendermaßen gelöst:

Code:
procedure TFQuizerstellen.btnSpeichernClick(Sender: TObject);
 var
   ini: TIniFile;
   i: Integer;

 begin

   ini:=TInifile.Create('./Speicher/Quiz '+Inttostr(Quiznummer)+'.ini');
   ini.Writeinteger('Frage '+inttostr(Nummer),'lines',mFrage.lines.count-1);
                                                                                                                                   for i := 0 to (mFrage.Lines.Count-1) do
     ini.WriteString('Frage '+inttostr(Nummer),'Zeile'+inttostr(i),mFrage.Lines.Strings[i]);
end;

// Quiznummer ist ein Integer der die Nummer des Quizzes angibt (1-5)
// Nummer ist ein Integer der die Nummer der Frage angibt (1-X)

Mein Problem ist nun folgendes: Ich möchte natürlich, dass beim Editieren eines bereits vorhandenem Quizzes auch die alte Frage & die alten Antworten dastehen. (Beispiel: Ich geb die Frage "Wie viel Meter ist ein Kilometer?" ein und die Antworten "10", "100", "1000", "10000". Danach speichere ich und schließe das Programm. Am nächsten Tag möchte ich das Quiz aber editieren und will dementsprechend alte Frage und die alten Antworten sehen in den Memos haben.)

Ich weiß jetzt allerdings nicht, wie ich das hinbekomme. Ich weiß zwar grundsätzlich, wie ich die .ini in ein Memo lade (wenn ich zum Beispiel die Prozedur auf einen Button packe), jedoch will ich ohne weiteren Klick die .ini automatisch geladen haben.

Meine Idee war zunächst das im OnShow Event der Editorform zu machen, doch aus mir unbekannten Gründen funktioniert dies nicht.
Prozedur war folgende:

Code:
procedure TFQuizerstellen.FormMouseEnter(Sender: TObject);
begin
end;

procedure TFQuizerstellen.FormShow(Sender: TObject);
 var
    ini: TIniFile;
    i: Integer;
  begin
    mFrage.Lines.Clear;
    mAntwort1.Lines.Clear;
    mAntwort2.Lines.Clear;                
    mAntwort3.Lines.Clear;
    mAntwort4.Lines.Clear;
     ini:=TInifile.Create('./Speicher/Quiz '+Inttostr(Quiznummer)+'.ini');
    for i := 0 to ini.ReadInteger('Frage '+inttostr(Nummer),'lines',-1) do
      MFrage.Lines.Add( ini.readstring('Frage '+inttostr(Nummer),'Zeile'+inttostr(i),'-'));
    ini.free;
  end;


Kann mir jemand helfen? Vermutlich ist die Lösung ziemlich einfach, aber ich komme einfach nicht drauf :oops: . Achso, und bitte versucht es Anfängerfreundlich auszudrücken :)

Gruß,
Astobix

Bummi 17. Apr 2013 21:10

AW: Daten aus .Ini Speicher auslesen
 
Es wird für alle einfacher wenn Du die entscheidenden Codepassagen hier veröffentlichst. Was wird wie, wann, in welchem Format gespeichert / dargestellt / geladen.
Sonst geht das gestochere im Nebel wieder los ...

Astobix 17. Apr 2013 21:20

AW: Daten aus .Ini Speicher auslesen
 
Hatte ich total vergessen, sorry. Hab jetzt die Speicherprozedur und meine Versuchte OnShow Ladeprozedur reineditiert.

Bummi 17. Apr 2013 21:44

AW: Daten aus .Ini Speicher auslesen
 
Du merkst Dir beim Speichern bis wohin Du gekommen bist, wenn nicht gespeichert werden soll speicherst Du 0.
Dann kannst Du bei Neustart die Antworten bis zur gemerkten Nummer belegen, die benötigten Informationen hast Du ja bereits in der ini-Datei.

Astobix 18. Apr 2013 20:28

AW: Daten aus .Ini Speicher auslesen
 
Konnte aus deiner (Bummis) Antwort zwar leider nichts machen, da das Problem ja war, dass die Ladevorgang beim OnShow nicht funktioniert, hab das Problem aber trotzdem lösen können, indem ich die Quizauswahl erst in der Editor-Form mache und die Ladefunktion auf die Quizauswahl draufgepackt habe.

Trotzdem danke für deine Hilfe! :)

Gruß,
Astobix

p80286 19. Apr 2013 10:13

AW: Daten aus .Ini Speicher auslesen
 
Also im onShow Daten zu laden halte ich für nicht so doll.
im tForm.Create wäre es wohl besser aufgehoben.
Weiterhin solltest Du eine eigene Prozedur für das Datenladen haben, die Du ggf. auch mit einem Buttonclick oder einem Menueeintrag aufrufen kannst.

Und was heißt "funktioniert nicht"?
Werden keine Daten angezeigt, was sagt der Debugger?

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz