Ganymed Geschrieben 27. April 2004 Teilen Geschrieben 27. April 2004 Hallo zusammen, ich habe hier ein Stück Quellcode bekommen, von dem ich nicht wirklich weiß, ob es C++ ist. Jedenfalls gibt es dort Variablen, die wiefolgt heissen: z.B. CString ActState(""); und mehere SQL-Statements, die so aussehen: sql.Sprintf("select ID from Artikel where ID = %s", ActJobID.Get()); Was ist denn %s? Es ist nirgends deklariert oder dergleichen. Ich weiß zwar jetzt, was da für Werte drinnestehen (mit Hilfe eines Logfiles), aber woher das kommt, weiss ich nicht. Per google hab ich die meisten Treffer für "%s" C++ bekommen. Von daher denke ich, dass ich hier richtig bin. Es ist zwar öfters benutzt worden, aber nigens erklärt was dieses "%s" eigentlich ist. Gruß Ganymed Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MasterC Geschrieben 27. April 2004 Teilen Geschrieben 27. April 2004 Sieht nach C++ aus. War das deine Frage? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 27. April 2004 Autor Teilen Geschrieben 27. April 2004 Original geschrieben von Ganymed Was ist denn %s? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
PuppetMaster Geschrieben 27. April 2004 Teilen Geschrieben 27. April 2004 Die Angaben in dieser Tabelle basieren auf der Annahme, daß in der Formatieranweisungkeine Flag-Zeichen, Breitenangaben, Präzisionsangaben oder Größenmodifizierer enthalten waren Hinweis: Bestimmte Konventionen begleiten einige dieser Formatieranweisungen. Typzeichen Erwartete Eingabe Ausgabeformat Numerische Werte d Integer signed int (dezimal) i Integer signed int (dezimal) o Integer unsigned int (oktal) u Integer unsigned int (dezimal) x Integer unsigned int (hexadezimal), Buchstaben a bis f X Integer unsigned int (hexadezimal), Buchstaben A bis F f Gleitkomma vorzeichenbehafteter Wert der Form [-]dddd.dddd. e Gleitkomma vorzeichenbehafteter Wert der Form [-]d.dddd oder e[+/-]ddd g Gleitkomma vorzeichenbehafteter Wert im e- oder f-Format. Präzision gibt die Anzahl signifikanter Ziffern an. Abschließende Nullen und Dezimalpunkt werden nur ausgegeben, wenn es nötig ist. E Gleitkomma dasselbe Format wie e, aber mit dem Zeichen E für den Exponenten G Gleitkomma dasselbe Format wie e, aber mit dem Zeichen E für den Exponenten, wenn das Format e verwendet wird. Zeichen c Zeichen einzelnes Zeichen s String-Zeiger Ausgabe bis zu einem NULL-Zeichen oder dem Erreichen der durch Präzision vorgegebenen Zeichenzahl % (nichts) Ausgabe des Zeichens % Zeiger n Zeiger auf int Speichert an der Position, auf die das Eingabeargument zeigt, die Anzahl der bis jetzt ausgegebenen Zeichen. p Zeiger Gibt das Eingabeargument als Zeiger in hexadezimaler Form aus (near-Zeiger als YYYY, far-Zeiger als XXXX:YYYY). Unendlich große positive oder negative Gleitkommazahlen werden als +INF bzw. als -INF ausgegeben. Eine "IEEE-Nichtzahl" wird als +NAN oder -NAN (Not-A-Number ) angegeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 27. April 2004 Autor Teilen Geschrieben 27. April 2004 *grübel* Heisst das, wenn ich anstatt %s ein %d da hin schreibe, dass ich dann in das SQL-Statement auch nen Integer reingesetzt bekomme? Die ID ist nämlich kein String, sondern ein Integer... Vielleicht bekomme ich deswegen die ganzen Fehler... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 27. April 2004 Autor Teilen Geschrieben 27. April 2004 Nachtrag: Also ich hab anstatt mal dem %s ein %d hingeschrieben. Jetzt bekomme ich zwar keine Fehlermeldung mehr, allerdings fehlt jetzt bei der Ausgabe etwas. Frage: Wie kann ich also das Ganze wieder zum Schluss zu einem String machen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 27. April 2004 Teilen Geschrieben 27. April 2004 Deine Frage kann man ohne weitere Informationen nicht beantworten. Die hier zitierten Formatangaben beziehen sich auf sprintf, eine Funktion aus der C-Standardbibliothek. Du benutzt eine Funktion Sprintf, eine Memberfuntion der Klasse, von der die Variable sql in deinem Code eine Instanz ist. Es ist zwar naheliegend, dass sich diese Funktion ähnlich verhält wie sprintf aus der Standardbibliothek, aber das ist nicht sicher. Du sagst, dass du jetzt keine Fehlermeldungen mehr bekommst. Hast du vorher welche bekommen? Wie heißt der Typ von sql? Hast du vielleicht eine Dokumentation der Sprintf-Funktion? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 27. April 2004 Autor Teilen Geschrieben 27. April 2004 Hallo, danke für die Ganzen Antworten. Das Problem hab ich jetzt gelöst *freu* Das Problem mit dem genauen Posten liegt darin, dass ich Quellcode in einer Anwendung einfüge und das Resultat erst in QuarkXPRess anschauen kann. Einen C++ Compiler habe ich nämlich nicht --> auch keine C++ Fehlermeldung. Ich bekomme halt nur Fehler von Quark aus. Aber durch ein paar Logfiles konnte ich herausfinden, dass ich die Prozedur, die hinter dem Statement steht einfach nochmal aufrufen muss; für jedes %s möchte er nämlich einen Funktionsaufruf haben. Durch die Umkonvertierung nach %d bin ich aber erst auf die Lösung gekommen Danke schön! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.