Variablenvergleich

shader09

Erfahrenes Mitglied
Morgchen,

Lese aus einer Datei 6 Datensätze(insgesamt 13 Zeichen lang).
Das funktioniert auch, nun möchte ich wenn in einer Zeile beim
13 Zeichen ein "X" steht. Dorthin ein Leerzeichen einfügen.
Wenn er aber bei dem Datensatz ist und er die beiden Variablen
vergleicht, kommt da immer true. Also das sie gleich sind.

Code:
  CString lZeile;
  CString lStandardDrucker;
  CString lStandardDruckerAuswahl = "X";
  char* lCharZeile;
  int li;

 mPrinterFile.FileOpen((char*)"\\Pfad",1,gSizePrinter); 
  for (li=0;li<=6;li++)
  {
    lZeile = (CString)mPrinterFile.Read(li);
    lStandardDrucker = lZeile.Mid(gPosStandardDrucker,1);
    if ((gPosStandardDrucker) == (lStandardDruckerAuswahl));   // Fehlerhaft
    {
      MessageBox(_T("gPosStandardDrucker"),_T("gPosStandardDrucker"),MB_OK);
      lZeile.Delete(gPosStandardDrucker,1);
      lZeile.Insert(gPosStandardDrucker, _T(" "));
      CStringToChar(lZeile,lCharZeile);
      mPrinterFile.Write(li, lCharZeile);
    }

Hoffe ihr könnt mir helfen und sagen worans scheitert, ich
verstehe es irgendwie absolut nicht.
 
Zuletzt bearbeitet:
Genial, das war auch der Fehler. Danke, aber warum sagt er mir das nicht selber das da ein Semikolon zu viel ist bzw. warum geht es deswegen nicht!?
 
Genial, das war auch der Fehler. Danke, aber warum sagt er mir das nicht selber das da ein Semikolon zu viel ist
Weil es kein Fehler ist. Du darfst soviele Semikola machen wie du willst.
bzw. warum geht es deswegen nicht!?
Das Semikolon ist eine "leere Anweisung", damit hast du die if-Anweisung direkt schon beendet. Die geschweiften Klammern (also der Anweisungsblock) danach hatten nichts mehr mit dem if zu tun.

Gruß
 
Genial, das war auch der Fehler. Danke, aber warum sagt er mir das nicht selber das da ein Semikolon zu viel ist bzw. warum geht es deswegen nicht!?
Dein Code ist syntaktisch nicht falsch, daher hat der Compiler auch nichts zu beanstanden. Das Semikolon an der Stelle bewirkt, dass der zum if-Statement gehörende Befehl nur eine leere Anweisung ist, also nix tut (Der Programmierer wird schon wissen, warum er das so macht :-) ). Der nachfolgende Codeblock hat dann mit dem if-Statement nichts mehr zu schaffen und wird daher immer ausgeführt (was bei dir zu der Ananhme geführt hat, dass die Auswertung immer "true" ergibt).

Gruß
MCoder
 
Zurück