Entschuldigt meine kürzliche Inaktivität.
Er liest eine Textdatei in eine Listbox ein. Wo ist da das Problem? Die Vorgabe war 'Textdatei oder typisierte Datei'.
Textdateien sind bei einfachen Sachen vorzuziehen, das man sie mit jedem Notepad-Derivat bearbeiten kann.
In deiner Textdatei muss neben dem Text, der das geschichtliche Ereignis beschreibt, auch die Jahreszahl stehen.
Damit das Programm die beiden Werte voneinander unterscheiden kann, sollte man sie markieren, z.B. mit einem Trennzeichen: "1939;Beginn des 2.Weltkrieges"
Damit kannst Du die Daten aber nicht einfach so ins Ereignispanel schreiben, sondern musst vorher Jahr von Ereignis trennen,
Delphi-Quellcode:
// Statt
// EreignisPanel.Caption:=ListBox1.Items.Strings[Zufall];
TrenneJahrUndEreignis (ListBox1.Items.Strings[Zufall], FJahr, Ereignis);
EreignisPanel.Caption := Ereignis;
...
'Ereignis' ist eine lokale String-Variable (die musst Du deklarieren, weißt Du, wo?)
'FJahr' ist ein privates Feld. Weißt Du auch, wo du das deklarieren musst?
Im OnClick des OK-Buttons vergleichst Du nun die Jahreszahleinfabe mit dem Feld 'FJahr' und gibst eine entsprechende Meldung aus.
Ach, trennen musst Du ja noch:
Delphi-Quellcode:
Procedure TForm1,TrenneJahrUndEreignis (text : String; Var jahr, ereignis : string);
Begin
...
jahr := ...
ereignis := ...
End;
Hier wird dir 'Pos' und 'Copy' weiterhelfen, und die Tatsache, das z.B. das Semikolon Jahr und Ereignis trennt.
Mehr Hilfe gibt es aber nicht
Um nochmal darauf zurückzukommen - ich habe versucht mich mit all den gegebenen Möglichkeiten vertraut zu machen, finde aber, dass ich mit dieser Variante am besten klar kommen werde, da wir es z.T. auch schon behandelt haben.
Ich hab mich mal dran versucht mit Pos und Copy zu arbeiten, komme allerdings nicht wirklich weiter; Delphi zeigt Fehler an, wo ich weiß, dass es falsch ist, ich aber auf keinen grünen Zweig komme... /:
Delphi-Quellcode:
private
{ Private-Deklarationen }
FJahr:string;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var Jahreszahl:Integer;
Datei: file of byte;
procedure Trennung(text:String);
var Jahr,Ereignis,Gesucht:String;
begin
AssignFile(Datei,'TextEreignis.txt');
Reset(Datei);
while not eof(Datei) do
begin
Readln(Datei,Gesucht);
if pos(';',Datei) > 0 then
copy (Datei,5,20);
...
jahr:=
ereignis:=
end;
Es scheitert bei mir an der Verwendung von Pos und Copy. Ich weiß, wozu man sie benutzt, aber WIE ist mir in diesem Fall unklar. Ich weiß, dass sich in dem Quelltextausschnitt Fehler verstecken und wenn ihr einen findet, würde ich mich freuen, wenn ihr ihn mir nennen würdet.
D.h. ich bräuchte jetzt nochmal einen Anstoß für die richtige Verwendung von Pos und Copy...
@ Sir Rufo;
Wenn ich mit TString arbeiten würde, wo würde ich denn dann in deinem Quelltext den Zugriff auf meine Textdatei unterbringen?
Danke!