[gelöst] #3'2' darf nicht in Memo2.Lines.Strings[2] enthalte

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

[gelöst] #3'2' darf nicht in Memo2.Lines.Strings[2] enthalte

Beitrag von idefix »

Hallo!

Bei meinem Vokabelprogramm habe ich drei Memos.
Hier lese ich die Eingaben zeilenweise aus, und vergleiche sie mit den vorgegebenen Antworten. (Memo2 und Memo3)

In Memo zwei wird die Antwort geschrieben. Pro Antwortmöglichkeit durch ein Komma und ein Enter getrennt. (Viele deutsche Fragen haben mehrere englische Bedeutungen.)

Jetzt übergebe ich die Antworten in den Memozeilen meiner Stringvariablen. Es sollte so sein, das wenn es nur zwei mögliche Antworten gibt, in Line 3, und 4 und 5 nichts stehen sollte. Das ist für mich wichtig, da ich mittels if-Abfrage für eine, zwei, drei, vier und fünf Antworten unterscheide.

Das Problem ist, das in Zeile 3 nichts stehen dürfte.
Es werden in Zeile 3, Zeile 4 und Zeile 5 jeweils der Inhalt

Code: Alles auswählen

#3'2'
übergeben.
Ich habe versucht mittels If Abfrage den Zellinhalt, wenn er denn so aussieht zu eliminieren. Das hat nicht geklappt.
Dann ist mir der Gedanke gekommen nach einem Steuerbefehl zu suchen. Die Google Suche hier im Forum hat aber nichts gebracht.
--------------
Im delphi-treff.de habe ich etwas über String Manipulationen gefunden:
http://www.delphi-treff.de/tutorials/ob ... unktionen/

Hier dachte ich, das mir die Trimm Function weiterhilft.

Code: Alles auswählen

function Trim(S: string): string;
S: der String, bei dem Leerzeichen vorn und hinten abgeschnitten werden sollen
Rückgabewert: der String ohne Leerzeichen vorn und hinten 
Es kann sein, das ich die Trim Function falsch aufrufe. Auf jeden Fall ändert

Code: Alles auswählen

Trim(Memo2String3);

nichts an dem Zellinhalt von Memo2String3.

Ich brauche somit Eure Hilfe.

Code: Alles auswählen

  Memo2String1 := Memo2.Lines.Strings[0];
  Memo2String1 := Memo2.Lines.Strings[0]; 
  Memo2String2 := Memo2.Lines.Strings[1];
  Memo2String3 := Memo2.Lines.Strings[2];
  Memo2String4 := Memo2.Lines.Strings[3];
  Memo2String5 := Memo2.Lines.Strings[4];
 
 
if Memo_Zwei_bearbeiten_Schalter = false then
begin
if (Memo3String1Zeile1 <> '') and
   (Memo3String2Zeile1 <> '') and
   (Memo3String3Zeile1 = '') then
 
  //*** Zeile 1 bis 2 bearbeiten
  begin
    if ((Memo2String1 = Memo3String1) and   // a1     
        (Memo2String2 = Memo3String2)          // a2    
      or
       ((Memo2String2 = Memo3String1) and    // a2 
        (Memo2String1 = Memo3String2)))        // a1
 
    then
    begin
      Ja_vorbereiten;
    end
    else
    begin
      Nein_vorbereiten;
    end;
    Memo_Zwei_bearbeiten_Schalter := true;
end;
Vielen Dank!

Gruß!
idefix
Zuletzt geändert von idefix am Mo 22. Apr 2013, 06:38, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: #3'2' darf nicht in Memo2.Lines.Strings[2] enthalten sei

Beitrag von theo »

Ich habe nicht den ganze Beitrag kapiert, aber dein Trim Problem lässt sich durch lesen lösen. :wink:

Code: Alles auswählen

function
...
Rückgabewert: der String ohne Leerzeichen vorn und hinten 
Also
Memo2String3:=Trim(Memo2String3);
Oder besser
Memo2String3 := Trim(Memo2.Lines.Strings[2]);

idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

Re: #3'2' darf nicht in Memo2.Lines.Strings[2] enthalten sei

Beitrag von idefix »

Hallo!
theo hat geschrieben:Ich habe nicht den ganze Beitrag kapiert, aber dein Trim Problem lässt sich durch lesen lösen. :wink:

Code: Alles auswählen

Memo2String3 := Trim(Memo2.Lines.Strings[2]);
 
Das hat funktioniert.
Was es mit

Code: Alles auswählen

#3'2'
auf sich hat, weiß ich immer noch nicht.

#3 scheint ein Steuerbefehl zu sein.
Die Zahl '2' ändert manchmal ihren Wert.

Nun gut. Das Problem ist gelöst. Wenn auch nicht verstanden.

Das Programm läuft.
Vielen Dank!

Gruß!
idefix

Antworten