Seite 1 von 1
[gelöst] Q2.value(2).toString() gibt Zeilenvorschub aus
Verfasst: 19. Oktober 2005 16:00
von eule3
hallo
Ich bearbeite in einer Schleife das Ergebnis einer Abfrage mit
dieser Zeilen:
Qstring tx =““;
Qstring mit =“mit“;
while ......
{
tx = tx + mit + Q2.value(2).toString();
mit =“,“;
}
stream << tx << "\n";
Zu meiner Überraschung wird nach jeden Wert ein neuer
Zeilen Vorschub eingefügt.
Ich habe eigentlich so etwas erwartet: mit wert,wert,wert [CR]
Aber ich bekomme folgendes Ergebnis:
mit wert[CR]
,wert[CR]
,wert[CR]
Eigentlich kann nur Q2.value(2).toString() den überflüssigen
Zeilenvorschub einfügen. Kann mir jemand sagen wie ich das
abstellen kann?
PS QT-Hilfe konnte mir zu diesen Thema nicht helfen.
Verfasst: 19. Oktober 2005 16:17
von FlorianBecker
Puh, kannst du mal bitte den originalen Code aus der gebauten Datei posten? Ich komm da nicht mehr mit, das ganze Code Stück ist falsch und bis wir dann wieder wirklich finden, was genau, vergeht immer der ein oder andere Post.
Re: Q2.value(2).toString() gibt einen Zeilenvorschub aus
Verfasst: 20. Oktober 2005 08:53
von Goos
eule3 hat geschrieben: Kann mir jemand sagen wie ich das
abstellen kann?
Ziemlicher Nebel heute
Goos
Verfasst: 20. Oktober 2005 14:46
von eule3
Hallo
Danke für die Antwort.
>> das ganze Code Stück ist falsch
Hoffentlich nicht !
Hört sich ja schrecklich an.
>>Puh, kannst du mal bitte den originalen Code aus der gebauten Datei >>posten?
Bitte.
Will mal hoffen das es das Richtige ist.
// *****************************************************************
// Aufzählung der Ringnummern
// *****************************************************************
sql2 = "SELECT Bemerkung, Funktion, Ring, lastTag, lastOrt FROM ringe_tmp WHERE art =

arameter1 ORDER BY ringe_tmp.Ring";
Q2.prepare(sql2);
Q2.bindValue(":Parameter1",Q1.value(3).toString());
Q2.exec();
if (!Q2.isActive()) Q2.lastError().showMessage();
// *****************************************************************
// Ringe ohne Bemerkung
// *****************************************************************
//Alle Ringe dieser Art abgrasen
while (Q2.next())
{
if (Q2.value(0).toString() == "" | Q2.value(1).toString() == "")
{ // Es ist keine bemerkung oder Funktion vorhanden
tx = tx + mit + Q2.value(2).toString();
mit = ",";
}
if (tx != "" )
{ // tx ist nicht leer -> ausgeben
stream << tx << "\n"; //Anzahl der abgelesenen Ringe
tx="";
}
}
mfg
PS: was soll die sache mit dem nebel?
Verfasst: 20. Oktober 2005 14:51
von FlorianBecker
eule3 hat geschrieben:// *****************************************************************
// Ringe ohne Bemerkung
// *****************************************************************
//Alle Ringe dieser Art abgrasen
while (Q2.next())
{
/* Das oder ist nur ein halbes oder */
if (Q2.value(0).toString() == "" | Q2.value(1).toString() == "")
{ // Es ist keine bemerkung oder Funktion vorhanden
tx = tx + mit + Q2.value(2).toString();
mit = ",";
}
/* Da tx immer ein Wert ist, es also immer ungleich "" ist, wird nach jedem tx eine Leerzeile eingefügt */
if (tx != "" )
{ // tx ist nicht leer -> ausgeben
stream << tx << "\n"; //Anzahl der abgelesenen Ringe
tx="";
}
}
Anstelle von == "" würde ich isEmpty() nehmen, ist irgendwie klarer. Außerdem versuche doch bitte deinen Code in einer gewissen Formatierung zu posten. Mit den CODE Tags geht das im Editor problemlos.
Verfasst: 20. Oktober 2005 14:53
von macman
Ist es so schwer die Code-Funktion des Forums zu nutzen? Oder zu Quoten? Wenn ich so ein Posting sehe, gucke ich meist gleich wieder weg

Oder sieht dein Code in deinem Editor auch so aus, alles schön an den Rand.
Verfasst: 20. Oktober 2005 14:53
von Goos
Deine While Schleife geht doch mit ueber die Ausgabe, du gibst also jeden Parameter einzeln aus und das dann natuerlich auch mit \n am Ende.
Was genau also findest an dem Verhalten so falsch, oder komisch?
Goos
PS: Nur noch n bissl Nebel, weiss schon fast was du fuer ein Problem hast
Verfasst: 20. Oktober 2005 20:39
von eule3
Hallo
Danke für die vielen Antworten.
Mein Problem ist gelöst, die Schleife ging
auch über die Ausgabe. Ein dummer Fehler den ich
selber hätte finden müssen. Tut mir leid.
QString.isEmpty() ist nun auch drin.
Aus den "halben Oder" wurde ein "ganzes Und"
Und ja, mein Code sieht im Editor haargenau so aus.
Ich persönlich konnte noch keine Formatierung
finden die mir irgendwie hilft die Übersicht zu
verbessern. Auch finde ich es zu viel Arbeit.
Aber ich lerne gerne hinzu.
Wenn mir jemand sagt wie der obrige Code besser
aussehen würde, werde ich es einbauen.
mfg
PS Im Herbst ist immer Nebel
Verfasst: 20. Oktober 2005 20:44
von FlorianBecker
Code: Alles auswählen
while ( Q2.next() ) {
if ( Q2.value( 0 ).toString().isEmpty() && Q2.value( 1 ).toString().isEmpty() ) {
tx = tx + mit + Q2.value( 2 ).toString();
mit = ",";
}
if ( !tx.isEmpty() ) {
stream << tx << "\n";
tx.clear();
}
}
Das ist meine Formatierung. Mit vielen Editoren geht eine eingestellte Formatierung automatisch, wo ist da der Aufwand? Welchen Editor benutzt du denn?
Verfasst: 21. Oktober 2005 11:41
von eule3
hallo
>>Welchen Editor benutzt du denn?
KDevelop.
Die Arbeit kommt dann wenn man den Code nicht
auf einmal richtig eingibt, sondern immer mal wieder
ändern muss. (Was Anfängern wohl häufig passiert)
Aber wenn ich wieder einmal Cost posten muss werde
ich versuchen das zu ändern.
Verfasst: 21. Oktober 2005 11:54
von macman
eule3 hat geschrieben:Aber wenn ich wieder einmal Cost posten muss werde
ich versuchen das zu ändern.
Schön. Dann versuch auch gleich die Quote-Funktion zu nutzen und versuch es nicht erst Usenet-konform, wenn Du es nicht kannst. Ausserdem muß man nicht Return drücken, wenn der Cursor an den Rand des Editfelds kommt, oder wie kommen deine kurzen Zeilen zustande? Du kannst auch die Vorschau-Funktion nutzen, wenn Du dir nicht sicher bist.
Sorry, aber wenn wir schon dabei sind Fehler zu beheben, dann gleich alle

Verfasst: 25. Oktober 2005 14:05
von eule3
hallo
Schön. Dann versuch auch gleich die Quote-Funktion zu nutzen und versuch es nicht erst Usenet-konform, wenn Du es nicht kannst. Ausserdem muß man nicht Return drücken, wenn der Cursor an den Rand des Editfelds kommt, oder wie kommen deine kurzen Zeilen zustande? Du kannst auch die Vorschau-Funktion nutzen, wenn Du dir nicht sicher bist.
Sorry, aber wenn wir schon dabei sind Fehler zu beheben, dann gleich alle
Hier muß ich leider passen.
Was ist "Usenet-konform" ?
Und was ist eine "Quote-Funktion" ?
und ich darf mal sagen das ich die Oberfläche hier nicht gerade
für Idioten wie ich geeigent ist. Wer auf dieses Posting antworten will
sollte es am besten per Mail machen (jiuj "at" freenet.de) da es nicht
mehr in dieses Forum passt.
mfg
PS
es muß auch dumme menschen geben, denn sonst hätten die
Klugen nichts zu lachen.