AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text in Checkbox oder Label anzeigen

Ein Thema von JimmyB · begonnen am 24. Sep 2022 · letzter Beitrag vom 25. Sep 2022
Antwort Antwort
Seite 1 von 2  1 2      
JimmyB

Registriert seit: 20. Mär 2022
26 Beiträge
 
#1

Text in Checkbox oder Label anzeigen

  Alt 24. Sep 2022, 18:13
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
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Text in Checkbox oder Label anzeigen

  Alt 24. Sep 2022, 18:34
Zur Lösung.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
JimmyB

Registriert seit: 20. Mär 2022
26 Beiträge
 
#3

AW: Text in Checkbox oder Label anzeigen

  Alt 24. Sep 2022, 18:57
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#4

AW: Text in Checkbox oder Label anzeigen

  Alt 24. Sep 2022, 20:57
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Text in Checkbox oder Label anzeigen

  Alt 24. Sep 2022, 21:13
PS: Delphi-Referenz durchsuchenTFile.ReadAllLines
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
JimmyB

Registriert seit: 20. Mär 2022
26 Beiträge
 
#6

AW: Text in Checkbox oder Label anzeigen

  Alt 25. Sep 2022, 09:39
Hallo Uwe,

dein Code ist ja bestechend kurz.
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
  Mit Zitat antworten Zitat
JimmyB

Registriert seit: 20. Mär 2022
26 Beiträge
 
#7

AW: Text in Checkbox oder Label anzeigen

  Alt 25. Sep 2022, 11:23
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.

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 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
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Text in Checkbox oder Label anzeigen

  Alt 25. Sep 2022, 11:45
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;
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Text in Checkbox oder Label anzeigen

  Alt 25. Sep 2022, 12:30
https://quality.embarcadero.com/browse/RSP-39531
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz