Re: CStringT::Format

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance

From: Andre Stille [MVP] (stille_at_socon.com)
Date: 03/23/05


Date: Wed, 23 Mar 2005 11:45:14 +0100

Hallo!

"Marc Weichhold" <weichhold@gmx.de> schrieb im Newsbeitrag
news:O7wj7H5LFHA.244@tk2msftngp13.phx.gbl...
>
> CString sDateCreated = dtCreated.Format("%d.%m.%Y %H:%M:%S");
> sSQL.Format("INSERT INTO Daten (ParentID,Name,IsFile,FileSize,Created)
> VALUES
> (%d,'%s',%d,%u,'%s')",m_nParentID,m_sName,(int)(m_toTyp==totDatei),m_uFileSi
> ze,sDateCreated);
>
> Das Ergebnis ist dann:
>
> sSQL = "INSERT INTO Daten (ParentID,Name,IsFile,FileSize,Created) VALUES
> (123,'Test',0,0,'(null)')"
>
> sDateCreated hat vor und nach dem Aufruf der Format-Funktion den korrekten
> Wert (z.B. "12.10.1998 11:37:28").

Was für ein Typ hat m_uFileSize? Das muss ein 32-Bit Integer sein, bei dir
ist es vermutlich ein 64-Bit Integer.

>
> Ein anderes Beispiel, dass in 50% aller Fälle zu einer Assertion führt,
> ist:
>
> CString s = "Test";
> s.Format("Das steht in s: %s",s);

Das erzeugt völlig zurecht Assertions. Das CStringT::Format arbeitet mit
sprintf und dort steht eindeutig drin, dass Kopieren von überlappenden
Strings undefiniert ist.

>
> Also, hat jemand ähnliche Probleme mit Format und weiß genaueres? Ich
> gewöhne mich zwar grad notgedrungen daran, den +-Operator der
> CStringT-Klasse zu benutzen (alle obigen Beispiele funktionieren damit im
> Übrigen 100%ig korrekt), würde aber lieber beim Format-Befehl bleiben.
>

Wenn CStringT::Format nicht wunschgemäss arbeitet, liegt das eigentlich
immer an einer falschen Argumentliste oder an überlappenden Strings.

MfG
Andre Stille



Relevant Pages

  • Re: CStringT::Format
    ... Welchen Formatkennzeichner muss ich denn für ein 64-Bit Integer ... Hmm, Du hast recht, wer lesen kann (und so einen Hilfe-Text auch mal zuende ... > immer an einer falschen Argumentliste oder an überlappenden Strings. ...
    (microsoft.public.de.vc)
  • Re: Bitfolge ausgeben
    ... Und bei & ist dies eben Integer. ... Argh. ... Selbstkorrektur: natürlich geht & auch mit Strings. ...
    (de.comp.lang.perl.misc)
  • Re: Eklige Vergleiche von Referenzen mittels ==
    ... Da ein Integer genauso wenig eine "echte" ... sind, kein Problem darstellt - sehe ich wenig Anlass, Strings oder ...
    (de.comp.lang.java)
  • Re: Varchar-Feld auf numerischen Wert =?ISO-8859-15?Q?=FCberpr=FCfen?=
    ... Es können also auch "Zahlen" darin vorkommen (alles Integer). ... diese bei einem SELECT von den Strings zu ...
    (de.comp.datenbanken.mysql)