Cfile -format festlegen
-
genau das mit der textdatei in der hex-daten stehen brauche ich. und diese datei möchte ich mit cfile erstellen, damit man noch gleichzeitig diese daten auslesen kann.
-
da dann formatier doch deinen Text mit CString Format() (Beispiele findeste im Netz massig) und schreib den Inhalt des CStrings mit CFile in eine Datei. Is doch eigentlich gar nicht soooo schwer, wobei, wenn du die Hexausgabe nur in der entwicklungszeit brauchst, konnst du besser du schreibst die Daten so wie sie kommen in eine Datei und benutzt einen Hex-Editor zu anschaun.
An sonnsten würde ich das ganze in einer Schleife Formatieren und dann an deinem Zielsting anhängen, wenn der durch is, kannst du den Zielstring mit CFile rausschreiben, ganz normal.
-
So, erstmal danke an euch alle. Habs jetzt hinbekommen, dass er mir zahlen schreibt, aber er schreibt statt z.b bd nur b. könnt ihr mir sagen woran das liegt?
hab das so:
CString p;
p.Format(_T("%02x",puffer); //puffer ist vorher def
file.Write(p,2);
-
So jetzt schwer zu sagen, aber bist du dir sicher das in puffer auch genügend daten sind?
Wobei 'X' gibt Großbuchstaben aus, sollteste vielleicht mal versuchen
-
Wenn ichs debugge, dann steht im p bd, aber in die datei schreibt es immer nur die hälfte.
Danke, hab schon x und X ausprobiert.
-
wenn ich im debug-Modus auf str gehe, dann öffnen sich register und dann steht da: ATL::CSimpleString<wchsr_t,1> was bedeutet das? Ich denke deswegen schreibt er nur das erste zeichen hin.
-
ich meine auf p gehe nicht str
-
na probier doch mal
CString p; p.Format(_T("%02x",puffer); //puffer ist vorher def file.Write(p,p.GetLenght());somit ist gewährleistet das er die gesammte länge des Strins schreibt und nicht das was du im vorgibst...
-
Das funktioniert auch nicht.
Wie gesagt ich glaube dass es an dieser Information liegt:
Also wenn ich mit der Maus auf p gehe, dann öffnet sich
p "bd" -> ATL::CSimpleString<wchar_t,1>...-> 98 L'b'
Und genau das was in den einfachen Anführungszeichen steht wird reingeschrieben, also hier 'b'Deswegen denke ich wenn man ATL... <wchar_t,2> umstellen könnte, dann würde es gehen.
-
Hallo,
du hast offensichtlich Unicode in den Projekt-Eigenschaften eingestellt (erkennbar am w_char_t!), d.h. alle Zeichen sind zwei Byte gross. Dann musst du natürlich auch die doppelte Länge (GetLength zählt nur die Zeichen, und das sind nur zwei, aber beide sind zwei Byte lang) schreiben:
file.Write(p,p.GetLength() * 2);Ansonsten kannst du Unicode auch umschalten, und dann ohne Verdopplung der zu schreibenden Länge auskommen.
MfG,
Probe-Nutzer
-
Man ich danke dir,Probenutzer. Genau das wars. Vielen Dank
-
Und wie schaltet man unicode um?
-
Projekteinstelungen -> General -> Characterset!
-
Wenn ich es deaktiviere dann kommt der Fehler : Failed to save the updated manifest to the file ".\Debug\EKG1.exe.embed.manifest". Falscher Parameter.
Was bedeutet das?
-
Versuche mal einen kompletten Rebuild deines Projektes (Debug -> Rebuild).
Er kann die Änderungen nicht in das Manifest der Anwendung übernehmen.Bei nem Rebuild erstellt er auch das Manifest nochmal neu.
Bei Fragen zum Manifest-File:

http://de.answers.yahoo.com/question/index?qid=20090928112723AA5YRwJ