(erledigt) OutputDebugString ohne Null

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Krishty
Establishment
Beiträge: 8249
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

(erledigt) OutputDebugString ohne Null

Beitrag von Krishty »

Hi,

Gibt es zu OutputDebugString() eine Alternative, die keinen nullterminierten String erwartet?

Ich benutze es zur Ausgabe eines ::std::basic_streambuf, wo eben auch Daten kommen, die keine Null am Ende haben … die Null von Hand anzufügen oder extra zu puffern erscheint mir als ein bisschen viel Aufwand für ein paar Buchstaben :/

Gruß, Ky
Zuletzt geändert von Krishty am 31.05.2010, 13:11, insgesamt 1-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: OutputDebugString ohne Null

Beitrag von kimmi »

Wo ist das Problem, da noch eine Null-Terminierung anzuhängen? Du kannst doch Datenblöcke prinzipiell mit einer \0 versehen und bist mit dem Thema durch. Und nein, ich kenne keinen anderen Call, der das kann.

Gruß Kimmi
Benutzeravatar
Krishty
Establishment
Beiträge: 8249
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: OutputDebugString ohne Null

Beitrag von Krishty »

kimmi hat geschrieben:? Du kannst doch Datenblöcke prinzipiell mit einer \0 versehen und bist mit dem Thema durch.
Naja, die Sache ist nur, dass ich nicht kontrollieren kann, wann (nach wievielen Buchstaben eines Blocks, ob bei einer Null usw) der Stream-Buffer geflusht werden (OutputDebugString() aufgerufen) soll ...

... und ich habe Sorge, dass das irgendwann kracht. [Halbwissen]::std::cerr ist ungepuffert, eigentlich müssten die Buchstaben dann einzeln kommen und ich müsste nach jedem einzelnen eine Null anhängen um den Text an DebugOutputString() senden zu können, oder?[/Halbwissen]
kimmi hat geschrieben:Wo ist das Problem, da noch eine Null-Terminierung anzuhängen?
Eine Allokation und eine Kopie. (Ich würde das zwar wegoptimieren, aber es wäre immernoch zu unsauber.)
kimmi hat geschrieben:Und nein, ich kenne keinen anderen Call, der das kann.
Ja, nach zwei Tagen Suche habe ich auch keine wirkliche Hoffnung mehr, dass es den gibt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: OutputDebugString ohne Null

Beitrag von kimmi »

Ich hatte mal ein ähnliches Problem. Ich mußte das per temporären Puffer lösen, um eine Null-Terminierung garantieren zu können. Ich habe dann einen statischen Puffer per Thread angelegt, der nicht jedesmal erneu allokiert wird, sondern "nur" mit Nullen gefüllt wird.

Gruß Kimmi
Benutzeravatar
Krishty
Establishment
Beiträge: 8249
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: OutputDebugString ohne Null

Beitrag von Krishty »

Ja, so einen Puffer habe ich schon in einer Nachbarimplementierung. Sei's drum, rein damit :) Verdammte WinAPI, ich *hasse* Null-Terminated Strings.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten