Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Edit Eingabe Vergleich / String aus Text File (https://www.delphipraxis.net/155440-edit-eingabe-vergleich-string-aus-text-file.html)

torro 23. Okt 2010 16:57

Delphi-Version: 7

Edit Eingabe Vergleich / String aus Text File
 
Hi,
folgendes Problem:
Ich bastel zur Zeit an nem Quiz für die Schule und habe als einen von mehreren Fragetypen auch eine Eingabefrage. Sprich es wird eine Frage angezeigt und die Antwort wird in ein Editfeld eingegeben.
Angeschlossen ist daran ist natürlich eine Auswertung der Antwort (sofort nach der Eingabe mit Button Click). Diese funktioniert an und für sich gut. Jetz kommt das Problem:
ist die Antwort eine Zahl, z.B. " Wie viele Aggregatzustände gibt es?" - "3" wird die Antwort immer FALSCH gewertet (hab mir die Auswertung zur Kontrolle auf das Form gelegt).
Die Zahlen durch Wörter esetzen hat leider auch keinen Sinn.

hier mal der Code zur Auswertung:


Delphi-Quellcode:
var Richtig1, FrageStr, Schluessel : string
// FrageStr und Schluessel könnt ihr eig ignorieren
...
IF EditEingabe.text=Richtig1
    then
        begin
            label7.Caption:='richtig';
            assignFile (outfile, EditSchuelername.Text + '.txt');
            reset (outfile);
            append (outfile);
            writeln (outfile, FrageStr);
            writeln (outfile, Schluessel);
            writeln (outfile, 'Richtig');
            closefile(outfile);
        end
    else
         begin
            label7.caption:='falsch';
            assignFile (outfile, EditSchuelername.Text + '.txt');
            reset (outfile);
            reset (outfile);
            append (outfile);
            writeln (outfile, FrageStr);
            writeln (outfile, Schluessel);
            writeln (outfile, 'Falsch');
            closefile (outfile);
        end;
Wie ihr sehen könnt wird dann das Ergebniss in ein Textfile geschrieben (funktioniert). So, jetz meine Frage/Bitte. Wieso werden keine Zahlen verglichen. Und wie bekomm ich hin das sie es werden? Sind ja letztenendes auch nur Strings. zeichen die wie Zahlen aussehen.

Danke

Christian Seehase 23. Okt 2010 17:17

AW: Edit Eingabe Vergleich / String aus Text File
 
Moin Torro,

es wäre ganz hilfreich, wenn Du mal den Code zeigen würdest, mit dem Du vergleichst, denn der scheint ja offensichtlich einen Fehler zu enthalten :wink:

Vergiss das vorherige :wall:
Kontrollier doch mal, was in Richtig1 steht.
Wenn da, z.B., 3 drinsteht und in EditEingabe.Text auch, müsste das als richtig gewertet werden.

Sir Rufo 23. Okt 2010 17:20

AW: Edit Eingabe Vergleich / String aus Text File
 
Hast du schon mit dem Debugger geprüft?

Hast du das in dem Programm wirklich so umgesetzt?
Die beiden Teile sind ja so gut wie gleich ... und dann noch ein doppeltes Reset

torro 23. Okt 2010 17:25

AW: Edit Eingabe Vergleich / String aus Text File
 
@ Christian: hab mir Richtig1 extra aufs form gelegt zur kontrolle. da steht immer ne 3 drin oder was gerade richtig sein soll.
@ Rufo: ja hab es so umgesetzt. Die doppelten Resets sind überflüssig? Debugger hab ich noch nie benutzt und wüsste auch nicht wie.

sx2008 23. Okt 2010 17:33

AW: Edit Eingabe Vergleich / String aus Text File
 
Zitat:

Zitat von torro (Beitrag 1057359)
Sprich es wird eine Frage angezeigt und die Antwort wird in ein Editfeld eingegeben

Das funktioniert so nicht richtig.
Ein Beispiel:
Auf die Frage "Wer war im Jahr 2009 deutscher Bundeskanzler" könnte man antworten "Angela Merkel" oder auch "Merkel, CDU" oder auch "A. Merkel".
Alle drei Antworten sind richtig aber dein Programm ist unfähig alle Antworten zu erkennen,
weil es keine künstliche Intelligenz hat.
Du müsstest auf ein Multiple-Choice Verfahren umsteigen.

torro 23. Okt 2010 17:38

AW: Edit Eingabe Vergleich / String aus Text File
 
Hab ich drin ;) Sind 3 verschiedene fragetypen. Multiple-Choice Fragen sind auch dabei. Die Eingabe Fragen sind eindeutig formuliert um das geschilderte Problem zu umgehen.

Sir Rufo 23. Okt 2010 17:42

AW: Edit Eingabe Vergleich / String aus Text File
 
Eindeutig?

"Wieviel Aggregatzustände gibt es?"
- 3
- drei
- Drei
- DREI
- natürlich drei

Sind alle richtig und würden von deinem Programm auch als richtig erkannt (also vom Design her)?

torro 23. Okt 2010 17:49

AW: Edit Eingabe Vergleich / String aus Text File
 
in der fragestellung wird angegeben ob ich eine zahl haben will oder nicht. außerdem soll auf die rechtschreibung geachtet werden.
allerdings entfernen wir uns grad etwas von meiner frage.

Sir Rufo 23. Okt 2010 17:52

AW: Edit Eingabe Vergleich / String aus Text File
 
Nur mal so als Vorschlag, wie man sich diese doppelten Codezeilen spart

Delphi-Quellcode:
var
  Richtig1, FrageStr, Schluessel : string;
  Ergebnis : string;
// FrageStr und Schluessel könnt ihr eig ignorieren
...
// Eingabe kommt von aussen

// Verarbeitung

IF EditEingabe.text = Richtig1 then
  Ergebnis := 'Richtig'
else
  Ergebnis := 'Falsch';

// Ausgabe ...

// ... auf dem Formular

Label7.Caption := Ergebnis;

// ... in eine Datei

AssignFile( outfile, EditSchuelername.Text + '.txt' );

// Also entweder

// Reset( outfile );

// oder

Append( outfile );

// beides zusammen macht schon mal gar keinen Sinn!

Writeln( outfile, FrageStr);
Writeln (outfile, Schluessel);
Writeln (outfile, 'Richtig');
Closefile(outfile);

torro 23. Okt 2010 17:56

AW: Edit Eingabe Vergleich / String aus Text File
 
Danke für die Idee. Hab das gleich nach dem Muster angepasst. Bin schlicht nich auf die Idee gekommen das Ergebnis auch noch in eine VAR zu schreiben.

Sir Rufo 23. Okt 2010 17:56

AW: Edit Eingabe Vergleich / String aus Text File
 
Zitat:

Zitat von torro (Beitrag 1057378)
in der fragestellung wird angegeben ob ich eine zahl haben will oder nicht. außerdem soll auf die rechtschreibung geachtet werden.
allerdings entfernen wir uns grad etwas von meiner frage.

Wenn du den Quelltext siehst dann klicke mal mit der linken Maustaste auf die Zeilen-Nummer der Zeile wo
Delphi-Quellcode:
IF EditEingabe.text=Richtig1
steht. Da sollte jetzt ein roter Punkt erscheinen.

Dann drückst du
Code:
F9
Sobald das Programm genau an diese Stelle kommt hält es dort an und du kannst nachschauen, welchen Wert die einzelnen Variablen haben (hier interessant welchen Inhalt haben die Variablen zum Zeitpunkt der Abfrage)

Mit F8 geht es einen Schritt weiter, mit F9 wird das gesamte Programm wieder fortgesetzt

Sir Rufo 23. Okt 2010 17:57

AW: Edit Eingabe Vergleich / String aus Text File
 
Zitat:

Zitat von torro (Beitrag 1057381)
Danke für die Idee. Hab das gleich nach dem Muster angepasst. Bin schlicht nich auf die Idee gekommen das Ergebnis auch noch in eine VAR zu schreiben.

Du bist nicht faul genug, würde mir niemals vorkommen, soviel Text doppelt zu schreiben ;)

torro 23. Okt 2010 18:06

AW: Edit Eingabe Vergleich / String aus Text File
 
so hab das mal probiert. in der variablen stehen immer die richtigen werte. egal ob "Westen", "2", oder "3. Oktober"...

Sir Rufo 23. Okt 2010 18:17

AW: Edit Eingabe Vergleich / String aus Text File
 
die Antwort hätte ja eigentlich "in den Variablen" lauten müssen, oder hast du nur bei einer geschaut?

Und trotzdem schlägt er in der If Anweisung den Else-Zweig ein?

Sind da vielleicht noch Leerzeichen (vor oder danach)?
Delphi-Quellcode:
uses StrUtils;
{...}
IF Trim( EditEingabe.text ) = Trim( Richtig1 ) then

torro 23. Okt 2010 18:27

AW: Edit Eingabe Vergleich / String aus Text File
 
Zitat:

Zitat von Sir Rufo (Beitrag 1057389)
Delphi-Quellcode:
uses StrUtils;
{...}
IF Trim( EditEingabe.text ) = Trim( Richtig1 ) then

Danke, das war des Rätsels Lösung!!
Da wäre ich nie draufgekommen...

Sir Rufo 23. Okt 2010 18:28

AW: Edit Eingabe Vergleich / String aus Text File
 
Augen auf und im Debugger den Inhalt der Variablen genau ansehen ;)

torro 23. Okt 2010 18:30

AW: Edit Eingabe Vergleich / String aus Text File
 
Was genau bewirkt das Trim eigentlich?
Edit:
ok, vergiss es...Delphi Hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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