Autor Beitrag
padawan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.11.10 16:46 
Hallo Delphi-Freunde!!

Habe 8 Checkboxen in einer Groupbox.
Die werden vom Benutzer nach Bedarf gesetzt.
Die Zustände dieser CheckBoxen- ob gesetzt oder nicht, möchte ich in eine Datei speichern und beim nächsten Prog-Start aus dieser Datei die Werte wieder setzen.
Habe Folgendes versucht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
i:=0; s:string[1];  // f=Datei mit 8 Werte, jeweils '0' oder '1'
while not eof(f) do
      readln(f, s);
      CheckBox[i]:=StrToBool(s);
      inc(i);
      end;

Aber das klappt leider nicht :cry:
Unter Google fand ich nur ähnliche Themen dazu. Auch in dem Buch "Delphi 6" konnte ich nichts finden.

Würde mich über einen hilfreichen Tio echt freuen!!!

Gruß Uli

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 17.11.10 16:50 
user profile iconpadawan hat folgendes geschrieben Zum zitierten Posting springen:
Aber das klappt leider nicht :cry:
Was klappt nicht? Das sieht doch ganz gut aus (abgesehen davon, dass du .Checked vergessen hast).
Immer vorausgesetzt du hast dein Array CheckBox auch korrekt gefüllt und die Zeilen stehen in der Datei.

Aber vermutlich fehlt dir einfach nur FindComponent... :roll:
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Mi 17.11.10 16:59 
Wie user profile iconjaenicke bereits erwähnte fehlt dir vermutlich FindComponent, wenn du das so machen willst:
ausblenden Delphi-Quelltext
1:
CheckBox[i]:=StrToBool(s);					

Das funktioniert so nicht. ;)

Google sagt...

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
padawan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.11.10 17:02 
Hallo!

Ja, habe es hier nicht vollständig eingetippt, aber im Quelltext steht es so:
ausblenden Delphi-Quelltext
1:
CheckBox[i].Checked := StrToBool(s);					
Beim compilieren kommt die Fehler meldung:
<Undeklarierter Bezeichner 'Checkbox'>

Mit zB: CheckBox1.Checked := StrToBool(s); gibt es zwar keine Fehlermeldung, Delphi will dieses [i] nicht.
Könnte ja die Checkboxen ohne Schleife setzen, aber schön ist das wohl nicht. Die Checkbox für eine Schleife indizieren, das gelingt mir nicht.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Das konnte ich mit meiner Suche "Delphi Checkbox" über Google natürlich nicht finden.
Ich werde gleich versuchen, FindComponent einzusetzen.
Melde mich gleich.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Nun, habe es sicher nicht richtig umsetzen können- erzeugt eine Delphi-Ausnahme:
ausblenden Delphi-Quelltext
1:
2:
TCheckbox(FindComponent('Checkbox'+IntToStr(i))).Checked:=
TCheckbox(FindComponent('Checkbox'+IntToStr(i))).Checked;

Compilieren klappt, bei Aufruf der Schleife erzeugt Absturz.

Die Checkboxen befinden sich auf Form3, müsste das also auch beachten.
Aber wie teile ich das Delphi mit??

Danke Euch!
Georg08
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: Mi 17.11.10 17:21 
Ich würde sowas mit einem IniFile lösen...
wäre vllt einfacher, da es die Funktion ReadBool schon hat
padawan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.11.10 17:32 
Hört sich viel versprechend an!
Muss mich damit erst vertraut machen, da ich noch keine Erfahrung mit einem ini.File habe.
Gibt es ein Tutorial darüber? Ich versuche es über Google.

Habe die Checkboxen zunächst 'zu Fuß' gesetzt(ohne Schleife)..naja

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 17.11.10 18:07 
user profile iconpadawan hat folgendes geschrieben Zum zitierten Posting springen:
Compilieren klappt, bei Aufruf der Schleife erzeugt Absturz.
Bist du denn sicher, dass CheckBox0 existiert? Das solltest du beim Aufruf prüfen.

user profile iconpadawan hat folgendes geschrieben Zum zitierten Posting springen:
Die Checkboxen befinden sich auf Form3, müsste das also auch beachten.
Aber wie teile ich das Delphi mit??
ausblenden Delphi-Quelltext
1:
...Form3.FindComponent...					
padawan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.11.10 18:33 
Hallo jaenicke!

Mit
ausblenden Delphi-Quelltext
1:
Form3.FindComponent('Checkbox'+IntToStr(i)).Checked:=Form3.FindComponent('Checkbox'+IntToStr(i)).Checked;					

ist Delphi nicht einverstanden: Undeklarierter Bezeichner 'Checked'

Hab noch viel zu lernen..

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: U- durch Highlight-Tags ersetzt
Georg08
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: Mi 17.11.10 18:39 
Ich hab mal ein Beispiel geschreiben, dass die Boxen findet, sie in eine Ini speichern kann und auch wieder auslesen...

Mann muss es eben ggf anpassen z.B. wenn die Checkboxen in einem anderen Formular sind, oder nicht wie in meinem Bsp CheckBox1, CheckBox2, ... heißen
Einloggen, um Attachments anzusehen!
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 17.11.10 18:41 
user profile iconpadawan hat folgendes geschrieben Zum zitierten Posting springen:
Hallo jaenicke!

Mit ...Form3.FindComponent('Checkbox'+IntToStr(i)).Checked:=Form3.FindComponent('Checkbox'+IntToStr(i)).Checked;

ist Delphi nicht einverstanden: Undeklarierter Bezeichner 'Checked'

Hab noch viel zu lernen..


Du musst die Compontenten noch auf TCheckbox casten, also

ausblenden Delphi-Quelltext
1:
(Form3.FindComponent('Checkbox' + IntToStr(i)) as TCheckbox).Checked := ....					


und das gleiche auf der anderen seite dann auch.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.


Zuletzt bearbeitet von elundril am Fr 19.11.10 22:23, insgesamt 1-mal bearbeitet
padawan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.11.10 22:08 
Werde es versuchen!

DANKE Euch!!!
padawan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.11.10 12:16 
Hallo Narses,

VIELEN Dank für Deine Mühe!!!

Habe alles mal eingebaut, es klappt einfach nicht.
Zunächst ist in der Deklaration GroupBox1 rot unterstrichen und bei F9 kommen gleich an die 10 Fehlermeldungen, habe Screenshot im Anhang. Diese Meldung kommt für jede Zeile, die ich von Dir bekommen habe. Also für jede Checkbox, BtnSave usw. Selbst beim Speichern des Quelltextes will Delphi alles entfernen.

Auf jeden Fall DANKESCHÖN!!!
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 19.11.10 12:25 
user profile iconpadawan hat folgendes geschrieben Zum zitierten Posting springen:
Habe alles mal eingebaut, es klappt einfach nicht.
Wenn du mit eingebaut meinst, dass du auch die Zeilen mit den CheckBoxen kopiert hast, kann es auch nicht gehen, die müssen natürlich auf dem Formular liegen...
padawan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.11.10 14:12 
Ja, die liegen auf der Form3, hier habe ich auch die units(IniFiles, XPMan) eingebunden. Kann die Ursache nicht rausfinden, da mir einfach die Grundlagen fehlen. Mit TP7 kam ich nahezu immer zurecht, eben alles zu Fuß programmiert. Jetzt kommt bei F9 immer die Meldung "Form3.XPManifest1 besitzt keine entspr. Komponente. Soll die Deklaration entfernt werden?" Ich klicke auf <Nein> und dann Kommt "Undeklarierter Bezeichner:'FindComponent'." Das mit den Checkboxen habe ich nun ohne Schleife gelöst:
ausblenden Delphi-Quelltext
1:
2:
if CheckBox1.Checked then s:='1' else s:='0';
   writeln(F, s+CheckBox1.Caption);
Und das eben für alle 8 Boxen. In jede Zeile der Datei(F) schreibe ich '0'/'1' für Checked, gefolgt von .Caption. Beim Start des Progs lade ch die Werte mit:
ausblenden Delphi-Quelltext
1:
2:
readln(f, s); Checkbox1.Checked:=StrToBool(copy(s, 11));
Checkbox1.Caption:=copy(s, 2, length(s)-1);

Das eben auch wieder für alle 8 Boxen. So kann ich als Anwender entscheiden, welche Boxen beim nächsten Start erscheinen sollen. Das klappt ausgezeichnet, der Weg dahin macht mich allerdings nicht so glücklich. Ich denke, dass ich das weiter zu Fuß mache und mehr Zeit für grundsätzliches über Delphi investiere. Will hier auch nicht nerven, hätte das nur gerne begriffen. DANKE vielmals!!!