Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Vokabeltrainer (https://www.delphipraxis.net/111101-vokabeltrainer.html)

Die Muhkuh 31. Mär 2008 18:53

Re: Vokabeltrainer
 
Ist vielleicht in den Optionen "Integriertes Debuggen" ausgeschaltet?

DeddyH 31. Mär 2008 18:55

Re: Vokabeltrainer
 
Wer macht denn sowas?

blender 31. Mär 2008 18:55

Re: Vokabeltrainer
 
Wo ist diese Einstellung?

Die Muhkuh 31. Mär 2008 18:58

Re: Vokabeltrainer
 
Ich weiß es nicht, aber nachschauen kann er mal.

Schau mal bei Tools -> Debugger-Optionen

blender 31. Mär 2008 19:01

Re: Vokabeltrainer
 
Meint ihr "Integrierte Fehleruche"? Das ist aktiv.
Integriertes Debuggen ist nicht vorhanden.

Die Muhkuh 31. Mär 2008 19:02

Re: Vokabeltrainer
 
Ja, das meine ich. Bei mir in Turbo Delphi Explorer heißt es "Integriertes Debuggen".

Kannst Du mal ein neues Projekt machen und dort eine simple Berechnung einfügen, einen Breakpoint einsetzen und schauen, ob er anhält?

blender 31. Mär 2008 19:06

Re: Vokabeltrainer
 
Jetzt hat es geklappt.
Aber nur mit dem neuen Projekt.

DeddyH 31. Mär 2008 19:08

Re: Vokabeltrainer
 
Dann erzeug das Projekt (nicht das Testprojekt) mal neu.

blender 31. Mär 2008 19:09

Re: Vokabeltrainer
 
Bei dem Vokabeltrainer geht es jetzt auch.
Aber bei MouseOver werden mir die Variablenwerte nicht angezeigt!

Die Muhkuh 31. Mär 2008 19:09

Re: Vokabeltrainer
 
Rechtsklick auf die Variable -> Fehlersuche -> Ausdruck untersuchen o.Ä.

DeddyH 31. Mär 2008 19:10

Re: Vokabeltrainer
 
Gut, das kann an der Personal liegen. Also entweder überwachte Ausdrücke oder mal locker Messageboxen einstreuen.

blender 31. Mär 2008 19:11

Re: Vokabeltrainer
 
Wert = 1
Die Edit-Komponente zeigt aber '0' an!

Die Muhkuh 31. Mär 2008 19:12

Re: Vokabeltrainer
 
Wird diese vielleicht noch an einer anderen Stelle geändert?

blender 31. Mär 2008 19:14

Re: Vokabeltrainer
 
Nein, nicht einmal woanders!!!
Nur beim Schließen wird noch einmal darauf zugegriffen.(zum Speichern)

Die Muhkuh 31. Mär 2008 19:17

Re: Vokabeltrainer
 
Hast Du mal geschaut, was nach dem LoadFromFile in Konfig.Strings drin steht?

blender 31. Mär 2008 19:24

Re: Vokabeltrainer
 
Konfig.Strings[0] = 6 (ICh habe den Wert noch einmal verändert, um die Speicherfunktion noch einmal zu testen.)
Konfig = ()
Fehlerbegrenzung = 6
Edit2.Text = '6'
Am Ende wird aber Null angezeigt!!!
Kann das irgendetwas mit der UpDown-Komponente zu tun haben?

DeddyH 31. Mär 2008 19:25

Re: Vokabeltrainer
 
Häng doch das Projekt mal an, sonst raten wir noch ewig weiter.

Die Muhkuh 31. Mär 2008 19:27

Re: Vokabeltrainer
 
Gut möglich. Die Position der UpDown-Komponente muss imho auch gesetzt werden.

blender 31. Mär 2008 19:28

Re: Vokabeltrainer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
hier ist die Datei.

Die Muhkuh 31. Mär 2008 19:33

Re: Vokabeltrainer
 
Hi,

schreib statt:

Delphi-Quellcode:
Edit2.Text := IntToStr(fehlerbegrenzung);
das hier:

Delphi-Quellcode:
UpDown1.Position := fehlerbegrenzung;

blender 31. Mär 2008 19:39

Re: Vokabeltrainer
 
Danke, klappt.

Wie verknüpfe ich ein anderes Fenster mit meinem?

Die Muhkuh 31. Mär 2008 19:40

Re: Vokabeltrainer
 
Neue Frage, neuer Thread bitte...

blender 31. Mär 2008 20:07

Re: Vokabeltrainer
 
Hat jemand von euch einmal die Abfrage ausprobiert?
Wie kommt es, dass wenn man nichts eingibt, also der Dialog zum überspringen angezeigt wird, dieser Dialog sehr häufig angezeigt wird?

DeddyH 31. Mär 2008 20:08

Re: Vokabeltrainer
 
Ich hab ehrlich gesagt gar nichts probiert, da ich das Programm nicht verstanden habe :mrgreen:

xZise 31. Mär 2008 20:29

Re: Vokabeltrainer
 
Mit statischen Pfaden wirst du nichts!
Auch wenn ich wieder Luckie auf mich hetze mit der Aussage ( :mrgreen: ):
Benutzte statt den statischen Pfad bitte den Programmorder.
Denn bekommst du indem du den Ort der exe (also C:\<Pfad>\<die exe>.exe) nimmst (ParamStr(0)) und nur den Pfad rausschneidest (ExtractFilePath(<Ort>)).

Weil selbst in "C:\Programme" habe ich ohne weiteres keine Schreibrechte!

Übrigens gewöhne dir an wenigstens etwas und auch sinnvoll einzurücken.

Ich will dich nicht runtermachen, aber wenn man gewisse Standards einhälst kommst du eher mit uns :stupid: und auch mit den Code zurecht.

Um Luckie glücklich zu machen ( :mrgreen: ):
Ich würde als Option für den Benutzer anbieten wo er speichern möchte.
Dabei hast du zwischen 3 Pfaden die auswahl:
  1. Festgelegter Pfad - z.B. eine andere HDD oder einfach ein anderer Ordner (Vorteil: Erfüllt mit 2. und 3. alle Kundenwünsche :D, Nachteil: Man muss nicht nur den Ordner des Programms löschen)
  2. Programmordner - Der Ordner indem dein Programm ist (Vorteil: Einfach zu löschen/managen, Nachteil: keine benutzerspezifischen Charakteritika)
  3. Anwendungsdaten - Der Ordner wovon jeder Benutzer ein hat. Einfach in die Addressleiste "%appdata%" eingeben (s.u.). (Vorteil: Benutzerspezfisch und garantierte Schreibrechte, Nachteil: Je nach Betriebssystem anders und man muss dannach extra suchen)

Zu den Anwendungsdaten:
Verwende nie sowas statisch:
C:\Dokumente und Einstellungen\blender\Anwendungsdaten\Vokabeltrain er\
Weil ein anderer XP/2000 user hätte dann einenen neuen Pfad.
Bei mir wäre es statt "blender" "xZise" oder "Fabian" (ältere ^^).
Außerdem haben wir in der Schule die Eigenen Dateien auf D:\!
Und unter Vista wäre es: [i]C:\Users\xZise\Appdata\Roaming[i]
Also wieder was ganz anderes.
Tipp: HOMEDIR - Das unbekannte Verzeichnis

MfG
xZise

blender 1. Apr 2008 14:41

Re: Vokabeltrainer
 
Danke für den Tipp.
Mein Problem ist, dass, wenn die erste Vokabel richtig beantwortet wurde, die Abfrage nicht fortgesetzt wird.
Außerdem werden die letzten Vokabeln gar nicht, b.z.w. weniger, abgefragt, wärend andere wiederum öfter als gewollt abgefragt werden.
Eigentlich sollte für jede vorhandene Vokabel ein Zähler vereinbart sein.
Wenn der Benutzer nun eine Falsche Vokabel eingibt, soll sich der Zähler dieser Vokabel erhöhen, damit effektiv gelernt werden kann. Bei einer richtigen Eingabe soll sich der Zähler um eins verringern.
Wenn der Zähler auf null steht, wird die dazugehörige Vokabel nicht mehr abgefragt.
Wieso geht das nicht???

blender 15. Apr 2008 18:54

Re: Vokabeltrainer
 
Hallo,
ich habe die abfrage neu Programmiert.
Dabei sollen beim öffnen die Vokabeln, Sprachen, Schwierigkeiten etc. in verschiedenen Listen gespeichert werden.
Nun tritt bie folgendem Code:
Delphi-Quellcode:
procedure TForm1.Abfragen1Click(Sender: TObject);
var gesamtedatei: TStringlist;
    datum: string;
    i: integer;
begin
try
gesamtedatei := TStringlist.create;
vokabelnf1   := TStringlist.create;
vokabelnf2   := TStringlist.create;
nochabzufr  := TStringlist.create;
 if opendialog1.Execute then
  begin
   gesamtedatei.loadfromfile(opendialog1.FileName);
   if opendialog1.FileName[length(OpenDialog1.FileName) - 6] = '.' then
    begin
     //Format: .vocab
     datum:= DateTimeToStr(now);
     Sprache1:= gesamtedatei[0];
     Sprache2:= gesamtedatei[1];
     for i := 2 to gesamtedatei.count do
      begin
      if i mod 2 = 2 then Vokabelnf1.add(gesamtedatei[i]) else Vokabelnf2.add(gesamtedatei[i]);
      end;
     for i := 0 to vokabelnf1.count do nochabzufr.Add('3');
    end
    else
    begin
     //Format: .vocab1
     datum:= gesamtedatei[0];
     Sprache1:= gesamtedatei[1];
     sprache2:= gesamtedatei[2];
      for i := 3                                     to ((gesamtedatei.count - 2)div 3)+2 do Vokabelnf1.add(gesamtedatei[i]);
      for i := (3 +((gesamtedatei.count - 2) div 3)) to (((gesamtedatei.count- 2)div 3)*2)do vokabelnf2.add(gesamtedatei[i]);
      for i := ((((gesamtedatei.count-2)div 3)*2)+3) to gesamtedatei.count do nochabzufr.add(gesamtedatei[i]);
    end;
  end;
finally
gesamtedatei.Free;
end;
speichern1.Enabled:= false;
end;
Folgender Fehler auf: Listenindex überschreitet das Maximum (14)
Ich kann mir das nicht erklähren.

IceTube 15. Apr 2008 21:45

Re: Vokabeltrainer
 
Wegen dem

Alter Code:
Delphi-Quellcode:
Sprache2:= gesamtedatei[1];
     for i := 2 to gesamtedatei.count do
So...

Delphi-Quellcode:
Sprache2:= gesamtedatei[1];
     for i := 2 to gesamtedatei.count-1 do //Count-1
Edit:

Natürlich auch...
Delphi-Quellcode:
for i := 0 to vokabelnf1.count-1 do
lg

blender 16. Apr 2008 15:44

Re: Vokabeltrainer
 
Wie bearbeitet Delphi das denn?
Ich muss wahrscheinlich doch noch etwas ändern, damit das Programm korrekt einliest, oder?

blender 20. Mai 2008 17:15

Re: Vokabeltrainer
 
Hallo,
ich habe die Abfrage neu Programmiert, komme aber nun nicht mehr mit Haltepunkten weiter:

Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var auswahl, gessum: integer;
    sprach1, sprach2, eingabe: string;
    richtanz: Boolean;
label 1;
begin

ZaeleNochAbzuFr(nochabzufr, gessum);
RandomVokabel(nochabzufr, auswahl);

if gessum > 0 then
 begin
 ChangeVokabel(auswahl, radiogroup1.ItemIndex, sprache1, sprache2, sprach1,sprach2);
 1:
 begin
 FrageAb(Vokabel1, Sprach1, Sprach2, Eingabe);

 VergleicheVokabel(eingabe, vokabel2, checkbox1.checked, fehler, richtanz);
 if (not richtanz) and (eingabe <> '') then goto 1;
 if eingabe <> '' then
  begin
  ShowMessage(sprach1 + ' - '+ sprach2 +#10#13+ vokabel1 + ' - '+vokabel2+#10#13+'Es werden noch '+inttostr(gessum)+' Vokabeln abgefragt.'+#10#13+'Du hast '+inttostr(fehler) {Hier zeigt sich der Fehler.} +' falsche Buchstaben eingegeben.');
  end;
 end;
end;
end;
Delphi-Quellcode:
procedure TForm1.VergleicheVokabel (Vokabel1, Vokabel2: String; FilterLeerZeichen: Boolean; var Fehler: Integer; var KonnteVergleichen: Boolean);
var i, j, gesamtfehler: Integer;
    Moeglichkeiten, Moeglichkeiten1, fehlerpromoegl: TStringList;
begin
gesamtfehler:=0;
Moeglichkeiten := TStringlist.Create;
Moeglichkeiten1 := TStringlist.Create;
fehlerpromoegl := TStringlist.Create;
GetMoeglichkeiten(Eingabe, filterleerzeichen, Moeglichkeiten);
GetMoeglichkeiten(Vokabel2, filterleerzeichen, Moeglichkeiten1);
KonnteVergleichen := Moeglichkeiten.Count=Moeglichkeiten1.Count;
if KonnteVergleichen then
 begin
 //Vergleiche
 for i := 0 to Moeglichkeiten.Count-1 do
  begin
  for j := 0 to moeglichkeiten1.count-1 do
   begin
   fehler:=0;
   VergleicheMoeglichkeit(Moeglichkeiten1[i], moeglichkeiten[j], Fehler);
   FehlerProMoegl.Add(inttostr(fehler));
   end;
  end;
 end;
 for i := 0 to moeglichkeiten.count-1 do
  begin
  fehler := StrToInt(FehlerProMoegl[i*moeglichkeiten.count]);
  for j := 0 to moeglichkeiten1.count-1 do
   begin
   if StrToInt(FehlerProMoegl[i*moeglichkeiten.count+j]) < fehler then fehler := StrToInt(FehlerProMoegl[i*moeglichkeiten.count+j]);
   end;
  inc(GesamtFehler, Fehler);
  end;
 fehler := gesamtfehler;
end;
Delphi-Quellcode:
procedure TForm1.GetMoeglichkeiten (Vokabel: String; LeerzFiltern: Boolean; Var Moeglichkeiten: TStringlist);
var i: Integer;
    Moeglichkeit, Filter: String;
begin
Filter:='';
if leerzfiltern then
begin
 for i := 1 to Length(Vokabel) do
 begin
 if vokabel[i] <> ' ' then Filter:=filter+vokabel[i];
 end;
Vokabel := filter;
end;

for i := 1 to Length(Vokabel) do
 begin
 if (Vokabel[i]<>',') and (vokabel[i] <> ';') then Moeglichkeit := Moeglichkeit + Vokabel[i]
 else
  begin
  Moeglichkeiten.Add(Moeglichkeit);
  Moeglichkeit:='';
  end;
 end;
 Moeglichkeiten.Add(Moeglichkeit);
 Moeglichkeit:='';
end;
Delphi-Quellcode:
procedure TForm1.VergleicheMoeglichkeit (Moegl1, Moegl2: String; var Fehler: integer);
var i, ausgleich: Integer;
begin
ausgleich := 0;
Fehler := 0;

for i := 1 to length(moegl1) do
 begin
 if i+ausgleich > length(moegl2) then inc(fehler) else
 begin
 if UpperCase(moegl1[i]) <> UpperCase(moegl2[i + ausgleich]) then
  begin
  inc(Fehler);
  if uppercase(moegl1[i]) = uppercase(moegl2[i + ausgleich - 1]) then
   begin
   dec(ausgleich);
   dec(fehler);
   end
   else
   if uppercase(moegl1[i]) = uppercase(moegl2[i + ausgleich + 1]) then
    begin
    inc(ausgleich)
    end;
  end;
 end;
 end;
end;
Delphi-Quellcode:
procedure TForm1.ChangeVokabel(auswahl, WasZuWas: integer; sprache1, sprache2: string; var sprach1, sprach2: string);
begin
 case WasZuWas of
0: begin
vokabel1 := vokabelnf1[auswahl]; sprach1 := sprache1;
vokabel2 := vokabelnf2[auswahl]; sprach2 := sprache2;
   end;
1: begin
vokabel2 := vokabelnf1[auswahl]; sprach2 := sprache1;
vokabel1 := vokabelnf2[auswahl]; sprach1 := sprache2;
   end;
2: begin
case random(2) of
0: begin
vokabel1 := vokabelnf1[auswahl]; sprach1 := sprache1;
vokabel2 := vokabelnf2[auswahl]; sprach2 := sprache2;
   end;
1: begin
vokabel2 := vokabelnf1[auswahl]; sprach2 := sprache1;
vokabel1 := vokabelnf2[auswahl]; sprach1 := sprache2;
   end;
  end;
end;
end;
end;
Delphi-Quellcode:
procedure TForm1.ZaeleNochAbzuFr (Werte: TStringlist; var Insgesamt: Integer);
var gessum, i: integer;
begin
gessum:=0;
for i := 0 to werte.count-1 do gessum := gessum + strtoint(nochabzufr[i]);
insgesamt:=gessum;
end;
Delphi-Quellcode:
procedure TForm1.FrageAb (Vokabel1, Sprache1, Sprache2: String; var eingabe: string);
begin
 eingabe := InputBox('Abfrage... '+sprache1+' - '+sprache2,'Bitte übersetze folgende Vokabel aus dem '+sprache1+'en ins '+sprache2+'e: '+vokabel1,'');
end;
Delphi-Quellcode:
procedure TForm1.RandomVokabel (nochabzufr: TStringList; var auswahl: integer);
var gessum: integer;
begin
randomize;
zaelenochabzufr(nochabzufr, gessum);
auswahl := random(vokabelnf1.count-1);
while (gessum > 0) and (strtoint(nochabzufr[auswahl]) <=0) do auswahl := random(vokabelnf1.count-1);
end;
Ich glaube, dass die Eingabe nicht richtig übergeben wird.
Beim Kompilieren werden keine Fehler, Warnungen oder Hinweise angezeigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr.
Seite 2 von 2     12   

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