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
. Achso, und bitte versucht es Anfängerfreundlich auszudrücken
Gruß,
Astobix