If-Abfrage IndexOf funktioniert nicht

Hi,

ich will mit einer If-Abfrage herausfinden ob in der Whileschleife ein bestimmter Befehl bereits hinzugefügt ist…ich komme aus der VB & Delphiwelt und habe da so einige Grundkenntnisse miteinfließenlassen, allerdings funktioniert das nicht ganz so wie ich will…

CString strLocalText;
strLocalText = [22 CHarge/Serie];

CString strLeft;
CString strRight;
CString strAnz=S.GTM(„Anz.“,nSprache);
CString strDat=S.GTM(„Ablaufdatum“,nSprache);
Cstring strLocalText2;
CString strLTTemp=strLocalText;
strLocalText="";
strlocaltext2=""
if(strLTTemp.GetLength()>0){
while(strLTTemp.GetLength()>0){
CString strLTLine=H.ExtractFirstLine(strLTTemp);
if(strLTLine.GetLength()>0){
CString strLotNr=H.ExtractFirstElementFromLine(strLTLine,":");
CString strAnz2=H.ExtractFirstElementFromLine(strLTLine,":");
CString strDat2=H.ExtractFirstElementFromLine(strLTLine,":");
strAnz2.TrimLeft();
strDat2.TrimLeft();

strLocalText2=strLocalText + strLotNr + " „;
if(strAnz2.GetLength()>0){strLocalText2=strLocalText2 + strAnz + „:“ + strAnz2 +“ ";};
if(strDat2.GetLength()>0){strLocalText2=strLocalText2 + strDat + „:“ + strDat2;};
};
strLocalText2=strLocalText2 + „\r\n“;

int ind = strlocaltext2.IndexOf(S.GTM(„Serien-/Chargennummer“,nSprache));
if (ind > -1)
{}
else
{
strLocalText2=S.GTM(„Serien-/Chargennummer“,nSprache) + „:“ + strLocalText2;
}

};
strlocaltext=strlocaltext2;
};

Dieser Code ergibt logischerweise einen Fehler…für euch logisch…für mich nihct :wink:

Ich habe zwei Seriennummern, die das Programm ausgeben soll, ich hatte stehen:

};
strLocalText2=strLocalText2 + „\r\n“;
strLocalText2=S.GTM(„Serien-/Chargennummer“,nSprache) + „:“ + strLocalText2;
};
strlocaltext=strlocaltext2;
};

Statt:

strLocalText2=strLocalText2 + „\r\n“;

int ind = strlocaltext2.IndexOf(S.GTM(„Serien-/Chargennummer“,nSprache));
if (ind > -1)
{}
else
{
strLocalText2=S.GTM(„Serien-/Chargennummer“,nSprache) + „:“ + strLocalText2;
}

};
strlocaltext=strlocaltext2;
};

Dann kam folgendes dabei heraus:

SerialNumber: SerialNumber:090010090 Qty: 1 Exp.Date: 12.12.2012
090010091 Qty: 4 Exp.Date 13.12.2012

Ich hätte gerne ohne großen Aufwand das folgendes steht:

SerialNumber: … Qty: … Exp.Date: …
SerialNumber: … Qty: … Exp.Date: …

Wie kann man das auf einfachstem Weg lösen? Bitte um Hilfe :smile:

Danke vielmals :smile: ich hoffe, dass ihr euch da besser auskennt als ich!

Tut mir leid. Ich kenne mich in delphi nicht aus.
Ich habe immer ausschließlich in c programmiert.

Tut mir leid. Ich kenne mich in delphi nicht aus.
Ich habe immer ausschließlich in c programmiert.

Macht ja nichts, danke auf jeden Fall für deine Antwort :smile: ich bin ja über alles dankbar :smile:

(ich Probier eh schon seit Stunden herum ^^)

Hi,

ich will mit einer If-Abfrage herausfinden ob in der
Whileschleife ein bestimmter Befehl bereits hinzugefügt
ist…ich komme aus der VB & Delphiwelt und habe da so einige
Grundkenntnisse miteinfließenlassen, allerdings funktioniert
das nicht ganz so wie ich will…

CString strLocalText;
strLocalText = [22 CHarge/Serie];

CString strLeft;
CString strRight;
CString strAnz=S.GTM(„Anz.“,nSprache);
CString strDat=S.GTM(„Ablaufdatum“,nSprache);
Cstring strLocalText2;
CString strLTTemp=strLocalText;
strLocalText="";
strlocaltext2=""
if(strLTTemp.GetLength()>0){
while(strLTTemp.GetLength()>0){
CString strLTLine=H.ExtractFirstLine(strLTTemp);
if(strLTLine.GetLength()>0){
CString
strLotNr=H.ExtractFirstElementFromLine(strLTLine,":");
CString
strAnz2=H.ExtractFirstElementFromLine(strLTLine,":");
CString
strDat2=H.ExtractFirstElementFromLine(strLTLine,":");
strAnz2.TrimLeft();
strDat2.TrimLeft();

strLocalText2=strLocalText + strLotNr + " „;
if(strAnz2.GetLength()>0){strLocalText2=strLocalText2 +
strAnz + „:“ + strAnz2 +“ ";};
if(strDat2.GetLength()>0){strLocalText2=strLocalText2 +
strDat + „:“ + strDat2;};
};
strLocalText2=strLocalText2 + „\r\n“;

int ind =
strlocaltext2.IndexOf(S.GTM(„Serien-/Chargennummer“,nSprache));
if (ind > -1)
{}
else
{
strLocalText2=S.GTM(„Serien-/Chargennummer“,nSprache) + „:“ +
strLocalText2;
}

};
strlocaltext=strlocaltext2;
};

Dieser Code ergibt logischerweise einen Fehler…für euch
logisch…für mich nihct :wink:

Welchen Fehler bekommst Du denn?

Ich habe zwei Seriennummern, die das Programm ausgeben soll,
ich hatte stehen:

};
strLocalText2=strLocalText2 + „\r\n“;
strLocalText2=S.GTM(„Serien-/Chargennummer“,nSprache) + „:“ +
strLocalText2;
};
strlocaltext=strlocaltext2;
};

Statt:

strLocalText2=strLocalText2 + „\r\n“;

int ind =
strlocaltext2.IndexOf(S.GTM(„Serien-/Chargennummer“,nSprache));
if (ind > -1)
{}
else
{
strLocalText2=S.GTM(„Serien-/Chargennummer“,nSprache) + „:“ +
strLocalText2;
}

};
strlocaltext=strlocaltext2;
};

Dann kam folgendes dabei heraus:

SerialNumber: SerialNumber:090010090 Qty: 1 Exp.Date:
12.12.2012
090010091 Qty: 4 Exp.Date 13.12.2012

Ich hätte gerne ohne großen Aufwand das folgendes steht:

SerialNumber: … Qty: … Exp.Date: …
SerialNumber: … Qty: … Exp.Date: …

Wie kann man das auf einfachstem Weg lösen? Bitte um Hilfe :smile:

Was ist denn anders als oben?

Beim oberen kann ich das Programm nicht mehr bedienen, es stürzt ab und beim unteren steht es nicht so wie ich will sondern wie geschildert:

Serien-/Chargennummer:Serien-/Chargennummer: xxxxx Qty: 3 Exp.Date: 12/2012
xxxx2 Qty: 5 Exp Date: 12/2045

Hi,

Deine Fehlerbeschreibungen sind etwas… schwammig.

Beim oberen kann ich das Programm nicht mehr bedienen, es

Das klingt nach Endlosschleife?

stürzt ab und beim unteren steht es nicht so wie ich will
sondern wie geschildert:

Serien-/Chargennummer:Serien-/Chargennummer: xxxxx Qty: 3
Exp.Date: 12/2012
xxxx2 Qty: 5 Exp Date: 12/2045

Hier stimmt scheinbar etwas bei der Reihenfolge der Ausgabe nicht? Was passiert denn nacheinander, wird also in welcher Reihenfolge ausgegeben? forks sehe ich nicht, Threading benutzt Du auch nicht?

Weder noch nein.

Es tut mir leid, dass meine Fehlerbeschreibung schwammig ist…zuerst kommt ein Syntaxfehler welcher dann wie du sagst, vermutlich in eine Endlosschleife ausartet da ich den Fehler nichtmal wegklicken kann…

strLocaltext2 wird zusammengebaut und danach als strLocaltext ausgegeben…allerdings funktioniert es nicht ganz…

zuerst werden Seriennummer, Anzahl und Datum zusammengebaut und am Schluss schreibt er je nach Sprache dann „Serien-/Chargennummer“ dazu…

wenn das Programm nun jedoch zwei Ausdrücke verwalten muss sprich es sind zwei Seriennummern, dann steht in der Zweiten Zeile alles richtig bis auf den vorderen Zusatz „Serien-/Chargennummer“

Hmm, langsam sehe ich ein, dass Dein Topic nicht so ganz passt, ich glaube nämlich nicht, dass IndexOf nicht funktioniert.

Lass uns mal Ordnung in Deine Gedanken bringen.

ist…zuerst kommt ein Syntaxfehler welcher dann wie du sagst,

oh, welcher denn?

vermutlich in eine Endlosschleife ausartet da ich den Fehler
nichtmal wegklicken kann…

der Kandidat wäre dann natürlich

while( strLTTemp.GetLength() \> 0 )

Du machst Die while-Schleife so lange, wie in strLTTemp ein String mit Länge größer 0 steht. Allerdings sehe ich in der Schleife keine Zuweisung an strLTTemp, was an meinem mangelnden Verständnis für die von Dir benutzten Sprache (welche eigentlich?) liegen könnte, vermutlich aber passiert tatsächlich keine Zuweisung an diesen String mehr.

Ich nehme mal an, dass H ein offenes Dateihandle ist? Oder was macht ExtractFirstLine?

strLocaltext2 wird zusammengebaut und danach als strLocaltext
ausgegeben…allerdings funktioniert es nicht ganz…

Ich sehe keine Ausgabe von strLocaltext.

zuerst werden Seriennummer, Anzahl und Datum zusammengebaut
und am Schluss schreibt er je nach Sprache dann
„Serien-/Chargennummer“ dazu…

Genau, und zwar immer vor die Variable strLocalText2, wenn in strLocalText2 der String „Serien-/Chargennummer“ gefunden wird.

wenn das Programm nun jedoch zwei Ausdrücke verwalten muss
sprich es sind zwei Seriennummern, dann steht in der Zweiten
Zeile alles richtig bis auf den vorderen Zusatz
„Serien-/Chargennummer“

Dass Du einmal strlocaltext bzw. strlocaltext2 und die anderen Male strLocalText bzw. strLocalText2 schreibst, ist in Ordnung?

p.s.: Man findet dieselbe Anfrage auch anderswo (www.c-plusplus.de), und irgendwie haben alle dieselben Fragen wie ich… sowas wird nicht unbedingt gern gesehen.