Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#8

AW: Text in Checkbox oder Label anzeigen

  Alt 25. Sep 2022, 11:31
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 Delphi-Referenz durchsuchenTFile.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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Sep 2022 um 11:41 Uhr)
  Mit Zitat antworten Zitat