![]() |
Vokabeltrainer
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
im Anhang ist mein Vokabeltrainer 1 Beta 3 (als .zip). Man kann damit Vokabellisten erstellen und diese Später wieder Öffnen. Auf Knopfdruck wird man Abgefragt. Wenn man eine Vokabel falsch eintippt kommt diese einmal mehr wieder. Wenn ein Buchstabe falsch, oder vergessen wird, akzeptiert das Programm dies als richtig. Wenn die Vokabel in der Datei woanders existiert, wird auf eine Verwechslung hingewiesen und beide Vokabeln (die, welche gerade abgefragt wurde und die, mit der Verwechselt wurde) werden einmal mehr abgefragt. Wenn eine Vokabel richtig eingegeben wurde, wird diese einmal weniger abgefragt. Ist das so sinnvoll? Bei keiner Eingabe wird nachgefragt ob die abfrage beendet werden soll. Das funktioniert leider noch nicht so richtig. Die Abfrage kommt Teilweise mehrere Male. Es gibt auch noch andere Fehler. Lasse |
Re: Vokabeltrainer
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist eine neue Version.
Die Fehlerbegrenzung lässt sich nun Einstellen. Beim Schließen werden die Einstellungen gespeichert. Das funktioniert allerdings noch nicht so richtig:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin vokabelns := TStringlist.Create; vokabelnf := TStringlist.Create; Schwierigkeit := TStringlist.Create; fehlerbegrenzung := 1; bederf:= (combobox1.Text <> combobox2.Text) and (ComboBox1.ItemIndex <> 0) and (ComboBox2.ItemIndex <> 0) and (ComboBox1.Text <> '') and (ComboBox2.Text <> '') and (edit1.Text <> '') and (edit4.text <> '') and (edit1.Text <> edit4.Text); button3.Enabled:=bederf; konfig:= tstringlist.create; try if FileExists('C:\VokabelKonfig.ini') then begin konfig.LoadFromFile('C:\VokabelKonfig.ini'); fehlerbegrenzung:= strtoint(konfig[0]); edit2.Text:= inttostr(fehlerbegrenzung); end; finally konfig.Free; end; end;
Delphi-Quellcode:
Was ist daran falsch?
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin konfig:= TStringList.Create; try if FileExists('C:\VokabelKonfig.ini') then DeleteFile('C:\VokabelKonfig.ini'); konfig.Add(inttostr(fehlerbegrenzung)); konfig.SaveToFile('C:\VokabelKonfig.ini'); finally konfig.free; vokabelns.Free; vokabelnf.Free; Schwierigkeit.Free; end; end; Die neue Version ignoriert bei der Abfrage leer- und Satzzeichen. Lasse |
Re: Vokabeltrainer
Liste der Anhänge anzeigen (Anzahl: 1)
Die alte Version hatte irgendein Problem mit der abfrage.
|
Re: Vokabeltrainer
Hallo blender,
speicher bitte nichts in "<Laufwerkbuchstabe hier einsetzten>:\"! Lasse den Benutzer entscheiden wo. Entweder im Programmverzeichnis oder in den Anwendungsdaten. Außerdem brauchst du beim Schliessen die Datei vorher nicht zu löschen! MfG xZise |
Re: Vokabeltrainer
Ich versuche es jetzt mit einem Festgelegtem Progammpfad.
Das funktioniert nicht!!! Was it daran falsch?
Delphi-Quellcode:
"Das System kannden angegebenen Pfad nicht finden."
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var konfig: TStringList; begin canclose:= MessageDlg('Mchtest du wirklich beenden?',mtConfirmation,[mbyes, mbno],0)=mryes; konfig:= TStringList.Create; konfig.Add(IntToStr(fehlerbegrenzung)); if DirectoryExists('C:\Programme\Vokabeltrainer 1 Beta 5\Konfiurationseinstellungen\') then konfig.SaveToFile(DateiPfad) else begin CreateDir('C:\Programme\Vokabeltrainer 1 Beta 5\Konfiurationseinstellungen\'); konfig.SaveToFile(DateiPfad); end; konfig.free; end; Was soll das? Lasse |
Re: Vokabeltrainer
Was steht denn in "Dateipfad"?
|
Re: Vokabeltrainer
Inhalt von DateiPfadist:"C:\Programme\Vokabeltrainer 1 Beta 5\Konfiurationseinstellungen\Konfig.ini"
|
Re: Vokabeltrainer
Und wenn Du den Backslash mal weglässt?
Delphi-Quellcode:
if DirectoryExists('C:\Programme\Vokabeltrainer 1 Beta 5\Konfiurationseinstellungen') then
konfig.SaveToFile(DateiPfad) else begin CreateDir('C:\Programme\Vokabeltrainer 1 Beta 5\Konfiurationseinstellungen'); konfig.SaveToFile(DateiPfad); end; |
Re: Vokabeltrainer
Es funktioniert immer noch nicht.
|
Re: Vokabeltrainer
Hast Du Schreibrechte auf C:?
|
Re: Vokabeltrainer
Natürlich.
Ich bin Administrator. Außerdem wäre die Meldung dann: "Zugriff verweigert", oder? |
Re: Vokabeltrainer
Zitat:
|
Re: Vokabeltrainer
Ist der Pfad denn vorhanden (wenn auch falsch geschrieben)?
|
Re: Vokabeltrainer
Zitat:
Zitat:
Auf Anhieb sehe ich auch keinen Fehler. In welcher Zeile kommt er denn genau (oben oder unten beim Schreiben)? |
Re: Vokabeltrainer
Der Pfad wird doch von dem Programm erzeugt.
Ich habe ihn nachgeprüft, er ist vorhanden. Es kommt immer die Meldung: "C:\Programme\Vokabeltrainer 1 Beta 5\Konfiurationseinstellungen\Konfig.ini System kann den Pfad nicht finden!". Delphi erkennt keine Fehler. |
Re: Vokabeltrainer
Und Du bist sicher, dass Du aufgrund des Tippfehlers nicht 2 unterschiedliche Pfade für das Speichern und Laden verwendest? Ich würde eine Konstante verwenden, um das auszuschließen.
|
Re: Vokabeltrainer
Danke für den Hinweis auf den Rechtschreibfehler.
Nach der Behebung hat es Funktioniert. Danke!!! |
Re: Vokabeltrainer
Wisst ihr was hier falsch ist?
Die erste Zeile der geladenen Datei soll nun ausgelesen und der Edit-Komponente als Text zugewiesen werden. (Diese ist mit einer UpDown-Komponente Verknüpft.)
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var konfig: TStringlist; begin konfig:= TStringlist.Create; bederf:= (combobox1.Text <> combobox2.Text) and (ComboBox1.ItemIndex <> 0) and (ComboBox2.ItemIndex <> 0) and (ComboBox1.Text <> '') and (ComboBox2.Text <> '') and (edit1.Text <> '') and (edit4.text <> '') and (edit1.Text <> edit4.Text); button3.Enabled := bederf; vokabelns := TStringlist.Create; vokabelnf := TStringlist.Create; Schwierigkeit := TStringlist.Create; fehlerbegrenzung := 1; if FileExists(DateiPfad) then begin konfig.loadfromfile(DateiPfad); fehlerbegrenzung:= StrToInt(Konfig.Strings[0]); end; label2.Caption:= 'Die Fehlerbegrenzung liegt im Moment bei: '; edit2.Text:= IntToStr(fehlerbegrenzung); konfig.Free; end; |
Re: Vokabeltrainer
1. Gewöhn Dir mal eine halbwegs vernünftige Einrückung an.
2. Lokal erzeugte Objekt sollten auch lokal wieder freigegeben werden. 3. Was funktioniert denn nicht? |
Re: Vokabeltrainer
4. Die Resourcenschutzblöcke fehlen.
|
Re: Vokabeltrainer
Das gehört bei mir mit zu 2. ;) , hab ich nur nicht eindeutig gesagt.
|
Re: Vokabeltrainer
Zitat:
Dann steht da auch die Fehlerbeschreibung, nur nicht eindeutig gesagt. :mrgreen: *SCNR* |
Re: Vokabeltrainer
Die Edit-Komponente zeigt eine '0' an, owohl in der Datei ausdrücklich eine '1' gesspeichert ist!!!
Übrigens: An den Ressourcenschutzblöcken lag es nicht. |
Re: Vokabeltrainer
Hast Du mal einen Breakpoint gesetzt und durchgesteppt?
|
Re: Vokabeltrainer
Bei einem Haltepunkt wird bei mir nie gestoppt.
Ich weiß auch nicht warum. Man muss doch eigentlich nur den blauen Punkt anklicken, der daraufhin rot wird, oder? (Unbedingte Haltepunkte) |
Re: Vokabeltrainer
Ja.
|
Re: Vokabeltrainer
Genau das mache ich!!!
Das Programm jedoch läuft normal wie immer!!! :wall: |
Re: Vokabeltrainer
Dann führt er wohl den Code nicht aus.
Startet Du das Programm über Start -> Start (F9)? |
Re: Vokabeltrainer
Über F9.
|
Re: Vokabeltrainer
Ist das Ereignis (FormCreate) der Form überhaupt zugewiesen?
Eig. dürfte er, wenn dem nicht so wäre, den Code ja nicht einkompilieren. :-? Wo setzt Du den Breakpoint hin? |
Re: Vokabeltrainer
Der Haltepunkt ist bei:
Delphi-Quellcode:
Form1.Create ist Deklariert.
edit2.Text:= IntToStr(fehlerbegrenzung);
|
Re: Vokabeltrainer
Hallo,
ich bin überzeugt davon, dass du dich viel leichter tust, wenn du ![]() Auch die Fehlersuche wird dadurch erheblich vereinfacht. |
Re: Vokabeltrainer
Und schau bitte nochmal nach, ob Du das Ereignis auf der Form zugewiesen hast.
|
Re: Vokabeltrainer
Was meinst du damit?
|
Re: Vokabeltrainer
Im ObjektInspektor Dein Formular auswählen, auf "Ereignisse" klicke und dort schauen, ob FormCreate bei OnCreate eingetragen ist.
|
Re: Vokabeltrainer
Einfach mal nen Doppelklick auf die Form und schauen, wo man steht
|
Re: Vokabeltrainer
Ja, dort steht FormCreate.
|
Re: Vokabeltrainer
Und Dein Code?
|
Re: Vokabeltrainer
Der kommt auf Doppelklick.
|
Re: Vokabeltrainer
Dann muss der Breakpoint doch funzen. Ich kann mir nicht vorstellen, dass das an der Personal liegen soll.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 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-2025 by Thomas Breitkreuz