[gelöst] Q2.value(2).toString() gibt Zeilenvorschub aus

Alles rund um die Programmierung mit Qt
Antworten
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

[gelöst] Q2.value(2).toString() gibt Zeilenvorschub aus

Beitrag 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.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Re: Q2.value(2).toString() gibt einen Zeilenvorschub aus

Beitrag von Goos »

eule3 hat geschrieben: Kann mir jemand sagen wie ich das
abstellen kann?
Ziemlicher Nebel heute ;)

Goos
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Beitrag 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 = :Parameter1 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?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von FlorianBecker am 20. Oktober 2005 14:53, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag 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
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Beitrag 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
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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?
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Beitrag 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.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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 :)
eule3
Beiträge: 56
Registriert: 30. Juni 2005 23:13

Beitrag 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.
Antworten