DATEI-Konvertierung fuer NOOBS....HILFE!!!!!!
-
Mahlzeit!!
Ich habe da ein Problem......(seit Tagen)

Ich bekomme Textdateien von einem Server geliefert welche im Standard Textformat vorliegen.
Als erstes oeffne ich die EXISTDATEIN.txt und lese aus der mit dem strtok-Befehl die Namen der einzelnen zu oeffnenden Kundendateien aus
Diese Kundendateien lese ich dann wiederrum ein und zerlege sie mit dem
strtok-Befehl <<< in ihre einzelnen Attribute und speicher sie in einer Matrixum sie anschliessend in korrekter Form auf dem Bildschirm auszugeben
bis dahin alles wunderbar........
Die einzelnen Inhalte der Matrix aendere ich nun und schreibe dann mit dem
> wcstombs-Befehl <<< die Inhalte der Matrix wieder in ihre Dateien
und genau hier muss der Fehler liegen.......
warum kann ich nicht wieder einfach in ANSI abspeichern

BRAUCHE DRINGEND HILFE!!!!!!
VIELEN DANK
hier noch ein wenig Code:
EINLESEN UND STUECKELN 
BOOL COffeneAnfragenAuftragswahl::OnInitDialog() { CDialog::OnInitDialog(); //char *pmbhello = (char *)malloc( MB_CUR_MAX ); //wchar_t *pwc = (wchar_t *)malloc( sizeof( wchar_t )); //i = mbstowcs( pwc, pmbhello, MB_CUR_MAX ); int i=0,j=0,zahl=0; char *Dateien[5]; char *pointer; CString ExistDateien ="Daten\\Neukunden\\ExistDateienNeu.txt";// Ändern CFile ExDatei(ExistDateien,CFile::modeRead); char token[1000]; char delimiter[] ="~"; ExDatei.Read(token, sizeof(token)); pointer = strtok(token, delimiter); Dateien[i] = pointer; while(pointer=strtok(NULL, delimiter)) { i++; Dateien[i] = pointer; } m_AnzahlAuftraege =i+1; ExDatei.Close(); UpdateData(false); for (i=0;i< m_AnzahlAuftraege;i++) { char str[960]; CString dat = Dateien[i]; dat = "Daten\\Neukunden\\" +dat;// ÄNDERN CFile datei(dat, CFile::modeRead); datei.Read(str, sizeof(str)); UpdateData(false); //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////// Hier wird nur der String um Leerzeichen erweitert ////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// char Inhaltgeprueft[1000]; ///// Hier wir überprüft ob sich in dem ausgelesenden String 2 mal ~ hintereinander befindet int n=0,o=0; // Ist dies der Fall wird ein Leerzeichen zugefügt for (int m=0; m<960; m++) { o=0; if (str[m] == '~') // 1te Tilde einer möglichen Folge { if (str[m+1] == '~') // 2te Tilde einer möglichen Folge { Inhaltgeprueft[n+1] = ' '; // Leerzeichen beachten o=1; // schaft Platz für das Space (2mal n++...siehe unten) } } Inhaltgeprueft [n] = str[m]; n++; if (o == 1) // schaft Platz für das Space (2mal n++) { n++; } } UpdateData(false); // Hier wird wenn eine ~ direkt am Anfang des Strings steht ein Leerzeichen eingefügt if (Inhaltgeprueft[0] == '~') { for (int z=998; z>=0; z--) { Inhaltgeprueft[z+1]=Inhaltgeprueft[z]; // Komponenten werden alle um 1 erhoeht um vorne Platz zu machen fuer ' ' } Inhaltgeprueft[0]=' '; } UpdateData(false); ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////// HIER ENDE DER ERWEITERUNG ///////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////// /|\ // Geändert 05.12.2003 TESTEN!!!////// char delimiter1[] ="~"; char *pointer1; pointer1 = strtok(Inhaltgeprueft, delimiter1); int k=0; m_MatrixOffeneAnfragen[i][k] = pointer1; while(pointer1=strtok(NULL, delimiter1)) { k++; m_MatrixOffeneAnfragen[i][k] = pointer1; } m_ControllList.AddString( m_MatrixOffeneAnfragen[i][0]+" "+ m_MatrixOffeneAnfragen[i][1]); j++; datei.Close(); } m_1 = token; UpdateData(false); return TRUE; } void COffeneAnfragenAuftragswahl::OnDblclkAuftargsbox() { m_zahl = m_ControllList.GetCurSel(); // Cursorposition holen m_sicht =""; // Editfeld leeren // Formatierte Ausgabe im Editfeld m_sicht=( ">> Ausgewählter Datensatz! <<\r\nD-Nr :\t" + m_MatrixOffeneAnfragen[m_zahl][0]+"\r\n" +"Name :\t" + m_MatrixOffeneAnfragen[m_zahl][1]+"\r\n" +"Name1 :\t" + m_MatrixOffeneAnfragen[m_zahl][2]+"\r\n" +"Name2 :\t" + m_MatrixOffeneAnfragen[m_zahl][3]+"\r\n" +"Str :\t" + m_MatrixOffeneAnfragen[m_zahl][4]+"\r\n" +"PLZ :\t" + m_MatrixOffeneAnfragen[m_zahl][5]+"\r\n" +"Ort :\t" + m_MatrixOffeneAnfragen[m_zahl][6]+"\r\n" +"Mobil :\t" + m_MatrixOffeneAnfragen[m_zahl][7]+"\r\n" +"Tel. :\t" + m_MatrixOffeneAnfragen[m_zahl][8]+"\r\n" +"Fax :\t" + m_MatrixOffeneAnfragen[m_zahl][9]+"\r\n" +"E-Mail:\t" + m_MatrixOffeneAnfragen[m_zahl][10]+"\r\n" +"Verk. :\t" + m_MatrixOffeneAnfragen[m_zahl][11]+"\r\n" +"Datum :\t" + m_MatrixOffeneAnfragen[m_zahl][12]+"\r\n"); UpdateData(false); }
SCHREIBEN 
BOOL COffeneAnfragenKommdaten::OnInitDialog() { CDialog::OnInitDialog(); m_Anfrage_mobil = m_MatrixOffeneAnfragen[m_zahl][7]; m_Anfrage_telefon = m_MatrixOffeneAnfragen[m_zahl][8]; m_Anfrage_fax = m_MatrixOffeneAnfragen[m_zahl][9]; m_Anfrage_email = m_MatrixOffeneAnfragen[m_zahl][10]; UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void COffeneAnfragenKommdaten::OnAnfrageKommWeiter() { if (m_Anfrage_mobil=="") {m_Anfrage_mobil =" ";} if (m_Anfrage_telefon=="") {m_Anfrage_telefon =" ";} if (m_Anfrage_fax=="") {m_Anfrage_fax =" ";} if (m_Anfrage_email=="") {m_Anfrage_email =" ";} m_MatrixOffeneAnfragen[m_zahl][7] =m_Anfrage_mobil; m_MatrixOffeneAnfragen[m_zahl][8] =m_Anfrage_telefon; m_MatrixOffeneAnfragen[m_zahl][9] =m_Anfrage_fax; m_MatrixOffeneAnfragen[m_zahl][10] =m_Anfrage_email; CString Inhalt = m_MatrixOffeneAnfragen[m_zahl][0]+"~" + m_MatrixOffeneAnfragen[m_zahl][1]+"~" + m_MatrixOffeneAnfragen[m_zahl][2]+"~" + m_MatrixOffeneAnfragen[m_zahl][3]+"~" + m_MatrixOffeneAnfragen[m_zahl][4]+"~" + m_MatrixOffeneAnfragen[m_zahl][5]+"~" + m_MatrixOffeneAnfragen[m_zahl][6]+"~" + m_MatrixOffeneAnfragen[m_zahl][7]+"~" + m_MatrixOffeneAnfragen[m_zahl][8]+"~" + m_MatrixOffeneAnfragen[m_zahl][9]+"~" + m_MatrixOffeneAnfragen[m_zahl][10]+"~" + m_MatrixOffeneAnfragen[m_zahl][11]+"~[DATUM]~"; int laenge=Inhalt.GetLength(); char cStr[1000]; DWORD dwSize; CString Dateiname ="Daten\\Neukunden\\" + m_MatrixOffeneAnfragen[m_zahl][0] +"KDneu.txt"; // ::SetFileAttributes(Dateiname, FILE_ATTRIBUTE_NORMAL); CFile datei(Dateiname, CFile::modeCreate |CFile::modeWrite ); dwSize = wcstombs(cStr, Inhalt, (sizeof(cStr)*2)); datei.Write(cStr, dwSize); // ::SetFileAttributes(Dateiname, FILE_ATTRIBUTE_READONLY); datei.Close(); UpdateData(false); COffeneAnfrageAnsprechpartner set; set.m_Anfrage_DNR = m_MatrixOffeneAnfragen[m_zahl][0]; set.DoModal(); COffeneAnfragenKommdaten::OnOK(); UpdateData(false); }
-
dwSize = wcstombs(cStr, Inhalt, (sizeof(cStr)*2));If wcstombs successfully converts the multibyte string, it returns the number of bytes written into the multibyte output string, excluding the terminating NULL (if any). If the mbstr argument is NULL, wcstombs returns the required size of the destination string. If wcstombs encounters a wide character it cannot be convert to a multibyte character, it returns –1 cast to type size_t.
-
Du solltest überlegen ob C in einem MFC-Programm sinnvoll ist.
Wenn du schon CStrings verwendest kannt du die auch weiterverwenden.
-
erstmal dank an Knuddlbaer....du antwortest mir jedesmal

und dann an Unix-Tom, da wir nun nach 2 tagen auch auf die idee gekommen sind alles umzugestalten und mal CString ausuprobieren was das teilen angeht
und siehe da alles funzt !!!!!
danke euch beiden
