Möchtest du nicht lernen den einen Knopf mit dem Helm zu benutzen?
[DELPHI] ... [/DELPHI]
Man arbeitet niemals mit relativen Pfaden!!!
Bzw. man expandiert sie selber,
weil
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
SetCurrentDir('C:\');
// das Programm muß beim Start garnicht im Arbeitsverzeichnis liegen (bzw. das Arbeitsverzeichnis muß nicht dem der EXE entsprechen)
// und z.B. ein OpenDialog ändert auch gern das Arbeitsverzeichnis.
if not FileExists('Fragen.txt') then
ShowMessage('Peng');
Was heißt "scheibar"?
Was sagt denn der Debugger?
Haltepunkt vor die Schleife, mit [F9] starten und dann Zeilenweise [F8] nachsehen.
Und falls mal irgendwas schief geht, benutzt man
immer einen Ressourcenschutzblock.
In Bezug auf die uralten Datei-Funktionen könnte man auch die Fehlerbehandlung abschalten, aber muß dann auch selber auf IOResult achten, also macht es keinen großen Unterschied.
Delphi-Quellcode:
AssignFile(myfile, ExtractFilePath(Application.ExeName) + 'Fragen.txt');
Reset(myfile);
try
...
finally
Closefile(myfile);
end;
Delphi-Quellcode:
SL := TStringList.Create;
try
SL.LoadFromFile(myfile, ExtractFilePath(Application.ExeName) + 'Fragen.txt');
...
finally
SL.Free;
end;
Nja, viele Wege nach Rom .... ähhh, viele Funktionen/Klassen stehen zur Auswahl und hier mal die Aktuellste.
(rate mal, warum ich so atomare Funktionen, wie
TFile.ReadAllLines TFile.ReadAllLines, mag ... schön kurz, automatische Speicherverwaltung und Fehlerbehandlung integriert)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Lines: TArray<
string>;
i: Integer;
begin
if not FileExists(ExtractFilePath(Application.ExeName) + '
Fragen.txt')
then
raise Exception.Create('
Die Datei mit den Fragen wurde nicht gefunden.');
Lines := TFile.ReadAllLines(ExtractFilePath(Application.ExeName) + '
Fragen.txt');
for i := 0
to High(Lines)
do
(FindComponent('
Checkbox' + IntToStr(i))
as TCheckBox).Caption := Lines[i];
redDisplay.Lines.AddAddStrings(Lines);
end;
Statt vieler TCheckBox nur eine TCheckListBox.
Delphi-Quellcode:
CheckListBox.Items.Clear;
CheckListBox.Items.AddAddStrings(Lines);
Oder wenn eh nur eine Antwort/Frage gewält werden kann,
dann TRadioButton, anstatt TCheckBox,
bzw. auch gleich eine TRadioGroup.