![]() |
Text in Checkbox oder Label anzeigen
Hallo allerseits,
ich habe die neue Anfrage in meiner vorherigen Anfrage gestellt, was verwirrend ist, weil es nicht mehr zum Titel passte. Darum habe ich einen neuen Post aufgemacht: Der Plan ist einen Textdatei auszulesen. Jede Zeile soll in einem eigenen Objekt (Checkbox, Label etc.) angezeigt werden. Ich habe eine Reihe von Checkboxen angelegt und in den "Captions" möchte ich jeweils eine Zeile aus der Textdatei anzeigen. Anders geschrieben, im Grunde ist es egal, in welchem Objekt ich die Zeilen jeweils anzeige. Wichtig ist, dass jede Zeile in einem eigenen Objekt (also nicht in einem Richtext Objekt gezeigt wird. Der Plan ist das ich Checkbox1, Checkbox2 und so weiter, der Reihe nach hochzähle und dann jeweils in die Textzeile dort anzeige. der Code, der so nicht funktioniert: while NOT eof (myfile) do begin //Step 6: Get each line of text file into string variable readln (myfile, sLine); // work with sLine var i : Integer; i:=1; for i := 1 to 10 do begin checkbox+inttostr(i).Caption := sLine; Mir gelingt es nicht eine Schleife zu erstellen, die den ausgelesenen Wert aus der Textdatei, in einer Checkbox angezeigt werden. Vg JimmyB |
AW: Text in Checkbox oder Label anzeigen
Zur
![]() |
AW: Text in Checkbox oder Label anzeigen
Hallo KodeZwerg,
danke für die Lösung und sieht komplizierter aus, als ich es mir vorgestellt hätte. Ich werde es mir gleich ansehen und Rückmeldung geben, ob ich die Umsetzung hinbekommen habe. Vg JimmyB |
AW: Text in Checkbox oder Label anzeigen
Das ist so nah wie möglich an deinem Code:
Delphi-Quellcode:
var i: Integer;
i := 1; while NOT eof (myfile) do begin //Step 6: Get each line of text file into string variable readln (myfile, sLine); // work with sLine (FindComponent('Checkbox' + IntToStr(i)) as TCheckBox).Caption := sLine; Inc(i); end; |
AW: Text in Checkbox oder Label anzeigen
|
AW: Text in Checkbox oder Label anzeigen
Hallo Uwe,
dein Code ist ja bestechend kurz. :thumb: Ich habe diesen ausprobiert, allerdings scheint die Schleife nicht zu laufen. Es wird nur die letzte Zeile aus der Textdatei in der Caption der ersten Checkbox angezeigt. procedure TForm1.Button1Click(Sender: TObject); // Step 1: Declare Varibales var myfile : textfile; sLine : string; i : integer; begin //Check if the file exists if not FileExists ('Fragen.txt') then begin showmessage ('Die Datei mit den Fragen kann nicht gefunden werden!'); Exit; end; //Step 3: Assign file to our variable AssignFile( myfile, 'Fragen.txt'); i := 1; //Step 4: Put the pointer at the top the textfile reset (myfile); //Step 5: Loop through our textfile //Hint: Must use BEGIN and END while NOT eof (myfile) do begin //Step 6: Get each line of text file into string variable readln (myfile, sLine); // work with sLine (FindComponent('Checkbox' + IntToStr(i)) as TCheckBox).Caption := sLine; Inc(i); redDisplay.Lines.Add( sLine); end; // end of while loop //Step 7: Close our association Closefile ( myfile); end; end. vg JimmyB |
AW: Text in Checkbox oder Label anzeigen
Hallo KodeZwerg,
dein Vorschlag erzeugt einen E/A Fehler 104, heißt die Datei kann nicht zum lesen geöffnet werden. Daran arbeite ich gerade noch. Zitat:
|
AW: Text in Checkbox oder Label anzeigen
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:
Was heißt "scheibar"?
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 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. :stupid: (rate mal, warum ich so atomare Funktionen, wie ![]() ![]()
Delphi-Quellcode:
Statt vieler TCheckBox nur eine TCheckListBox.
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;
Delphi-Quellcode:
Oder wenn eh nur eine Antwort/Frage gewält werden kann,
CheckListBox.Items.Clear;
CheckListBox.Items.AddAddStrings(Lines); dann TRadioButton, anstatt TCheckBox, bzw. auch gleich eine TRadioGroup. |
AW: Text in Checkbox oder Label anzeigen
Hallo JimmyB,
bitte nutze doch in Zukunft bei Code die Delphi-Tags (dein Code markieren und dann Klick auf das Delphi-Symbol vom Editor). Es ist sonst schwierig den Code zu lesen. Als Denkanstoß könnte dieser Code helfen. Voraussetzung ist, dass deine Checkboxen auch "Checkboxx" heißen. Das letzte x steht dabei für die Zahlen 1 oder 2 oder 3 usw.
Delphi-Quellcode:
PROCEDURE TForm2.Button1Click( Sender: TObject );
VAR i: Integer; sl: TStringList; BEGIN IF FileExists( 'myFile.txt' ) THEN BEGIN sl := TStringList.Create; TRY sl.LoadFromFile( 'myFile.txt' ); FOR i := 0 TO sl.Count - 1 DO BEGIN ( FindComponent( 'Checkbox' + IntToStr( i + 1 ) ) AS TCheckBox ).Caption := sl.strings[i]; END; FINALLY sl.Free; END; END; END; |
AW: Text in Checkbox oder Label anzeigen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz