CString verändern
-
mach mal einen static_cast<char>(str_XML[i]) evtl hilft das.
und += sollte schneller sein.Devil
-
for(int i = 0; i < str_XML.GetSize(); i++) m_strXMLDatei1 += static_cast<char>(str_XML[i]) ;error C2440: 'static_cast' : 'class CString' kann nicht in 'char' konvertiert werden
Gibt es vieleicht ein std::stringarray oder so was ähnliches?
-
hm, dann CString::GetBuffer(0);
Devil
-
CString::GetBuffer()???
Anstelle des CStringArray oder wie meinst du das?Ups, ich muß leider dringend weg. Meine Frau und meine beiden Kinder stehen schon unten vor der Tür und warten auf mich. Meine Tochter hat Geburtstag (3 Jahre).
Würde mich freuen, wenn ich dich morgen wieder hier im Forum treffe.
Bis dahin aber erstmal Vielen Dank und Schönen Abend
-
CString::GetBuffer()???
Anstelle des CStringArray oder wie meinst du das?Ups, ich muß leider dringend weg. Meine Frau und meine beiden Kinder stehen schon unten vor der Tür und warten auf mich. Meine Tochter hat Geburtstag (3 Jahre).
Würde mich freuen, wenn ich dich morgen wieder hier im Forum treffe.
Bis dahin aber erstmal Vielen Dank und Schönen Abend
-
str_XML[i].GetBuffer(0);
Das mein ich

Devil
-
Hi devil,
mit GetBuffer(0) bleibt es leider auch dabei, das 0D 0A nicht getrennt werden können. Ich glaub die einzige Möglichkeit ist nach der Übergabe von OD 0A zwei Positionen zurückzuspringen, das Zeichen 0D löschen und dann wieder ans Ende der Datei springen. Könnte vieleicht mit seekp() funktionieren, doch wie setzt man da die Parameter ein?
Ich dachte da anfor(i =0; i < m_strXMLDatei1.length();i++) if(i < 2) o << m_strXMLDatei1[i]; else if (m_strXMLDatei1[i] == '\n') { o << m_temp0xD; o << m_temp0xA << '\0'; // Zeichenfolge jetzt 0D 0D 0A 00 o.seekp(of.eof -3); // Cursor 3 Byte zurück o << '\0'; // Zeichenfolge jetzt 0D 00 0A 00 o.seekp(of.eof); // Cursor ans Dateiende } else o << m_strXMLDatei1[i] << '\0'; o.close();Aber die Steuerung innerhalb der Datei stimmt noch nicht.
-
Hm, papier und bleistift, und gucken wie man springen muss.
Dazu kann ich dir nicht viel sagen
Devil
-
Guten Morgen Devil,
ich glaube ich habe mich gerade falsch ausgedrückt. An welche Position der Cursor springen soll, weiß ich. Nur nicht wie.
o.seekp(o.eof-2) funktioniert ja nicht. Ich weiß nicht mal genau, of seekp die richtige Funktion dafür ist.
-
ok, also, seekp setzt den Zeiger relativ zum anfang der datei.
Also Anfang + 2 währe dann das 2 Byte. Du musst also wissen wieviel
Bytes du schon geschrieben hast, um dann dort direkt zu verändern.Devil
-
Danke für alles

Hier der Code, so dass es funktioniert
// Hex 00 nach jedem Zeichen setzen char m_temp0xD = 0xD; char m_temp0xA = 0xA; int j; ofstream o("C:\\stream.wme"); for(i =0, j=0; i < m_strXMLDatei1.length();i++,j++) if(i < 2) { o << m_strXMLDatei1[i]; } else if (m_strXMLDatei1[i] == '\n') { o << m_temp0xD ; o << m_temp0xA ; o.seekp(j+1); o << '\0'; o.seekp(j+3); o << '\0'; j+=3; } else { o << m_strXMLDatei1[i] << '\0'; j++; } o.close();
-
Und für was genau ist das jetzt ?
Devil
-
Jetzt kann ich die geschriebene Datei Stream.wme mit meinen Programm einlesen und so einen Stream zu einen Windows Media Server streamen. In der wme-Datei ist eine XML-Datei, die ich natürlich durch Variablen anpassen kann (z. B. Name, Server, Bitrate usw).
Habs gerade schon mal probiert, es funktioniert.
Sag mal, könntest Du mir vieleicht noch eine Frage beantworten???
Es geht um ein ChildFenster, welches ich auf OnButtonclick() erzeugen möchte.
Das Problem (Handle)hab ich hier gepostet.
http://www.c-plusplus.net/forum/viewtopic.php?t=58818&highlight=
-
Auch mein Wissen kennt eine Grenze

Versuchs mal bei Google
Devil