Textdateien unter MFC C++ anständig schreiben OHNE Dateikonvertierung?



  • laenge *2

    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHAAAAAAAAAAAA!!!!!!!!!

    sowas muss einem ja auch mal gesagt werden 😃 😃 😃 😃 😃

    eh cool wir probieren weiter!!

    melde mich gleich wieder 😃



  • MFK du bist ein Held!!!

    Schreiben funzt 😃 😃 😃 😃 😃

    ABER!!! mit dem erneuten Lesen klappts nicht so recht....

    wenn Du unseren Code abaendern koenntest so dass wir mal vergleichen koennten waere das ein richtig goiler Zug von Dir

    haben so manches WCHAR & WCSTOK probiert und kriegen einfach keine 0 Errors hin 😞

    er hat staendig Konvertierungsprobleme...

    wie gesagt wir wollen Text mit max. 1000 Zeichen einlesen

    VIELEN DANK
    Guenni



  • axso "ER" ist der drecks Compiler 🤡



  • m_AnzahlAuftraege =i; 
    for (i=0;i< m_AnzahlAuftraege;i++) 
    { 
    	WCHAR str[1000]; 
    	//CString end; 
    	//end.Format(L"%.i",i); 
    	CString dat = Dateien[i]; 
    	dat = L"Daten\\Neukunden\\" +dat;// ÄNDERN 
    
    	CFile datei(dat, CFile::modeRead); 
    	datei.Read(str, sizeof(str)); 
    	WCHAR delimiter1[] =L"~"; 
    	WCHAR *pointer1; 
    	pointer1 = wcstok(str, delimiter1); 
    	int k=0; 
    	m_MatrixOffeneAnfragen[i][k] = pointer1; 
    	while(pointer1=wcstok(NULL, delimiter1)) 
    	{ 
    		k++; 
    		m_MatrixOffeneAnfragen[i][k] = pointer1; 
    	} 
    
    	m_ControllList.AddString( m_MatrixOffeneAnfragen[i][0]+ L" "+ 
    		m_MatrixOffeneAnfragen[i][1] ); 
    	j++; 
    	datei.Close(); 
    } 
    UpdateData(false);
    


  • also bald hast du GOTTSTATUS

    ABER!!! halt nur bald....

    scheint zu funktionieren, jedoch laedt er nun unsere anfaenglich auf unserem server generierte textdatei etwas anders ein
    die scheint ANSI zu sein und wir laden ja nun in UNICODE ein...nicht war?

    hilf uns und du bist GOTT !! 😉



  • boah....wenn das uploaden auf den ppc nicht so lange dauern wuerde!!

    irgendwie oeffnet er unsere nun in unicode abgespeicherte datei in der die namen der eigentlichen dateien stehen aber kann die anderen nicht oeffnen da er vor jeden namen einer datei noch einen "wuerfel" davor setzt
    also dieses quadratische zeichen

    unsere dateien heissen eigentlich 10024KDneu.txt und er macht daraus []10024KDneu.txt

    wobei die klammern nun dieses Quadtrat darstellen sollen!!!!



  • hier mal die methode wo es haengt!!

    BOOL COffeneAnfragenAuftragswahl::OnInitDialog()
    {
    CDialog::OnInitDialog();

    int i=0,j=0,zahl=0;
    WCHAR *Dateien[100];
    WCHAR *pointer;
    CString ExistDateien =L"Daten\\Neukunden\\ExistDateienNeu.txt";// Ändern
    CFile ExDatei(ExistDateien,CFile::modeRead);
    WCHAR token[1000];
    WCHAR delimiter[] =L"~";
    ExDatei.Read(token, sizeof(token));
    pointer = wcstok(token, delimiter);

    Dateien[i] = pointer;

    // m_Dateien[i] = Dateien[i];

    while(pointer=wcstok(NULL, delimiter))
    {
    i++;
    Dateien[i] = pointer;
    // m_Dateien[i] = Dateien[i];
    }
    m_AnzahlAuftraege =i;
    ExDatei.Close();
    //CString test = Dateien[0];
    //m_ControllList.AddString( test);

    im oberen teil wird unsere datei (ExistDateienNeu.txt) geoeffnet in der die eigentlich wichtigen Dateien aufgefuehrt sind
    diese datei ist in unicode abgespeichert und vom inhalt korrekt

    im unteren teil sollen die namen der dateien gebildet werden
    danach werden diese aufgerufen und die einzelnen inhalte in eine matrix geschrieben um sie spaeter wunderbar aufrufen zu koennen

    LEIDER BILDET DAS PROGRAMM IMMER DIE FALSCHEN DATEINAMEN
    (wie im vorigen Posting beschrieben)

    for (i=0;i< m_AnzahlAuftraege;i++)
    {
    WCHAR str[1000];
    //CString end;
    //end.Format('%.i',i);
    CString dat =Dateien[i];
    dat =L"Daten\\Neukunden\" +dat;// ÄNDERN
    CFile datei(dat, CFile::modeRead);
    datei.Read(str, sizeof(str));
    WCHAR delimiter1[] =L"~";
    WCHAR *pointer1;
    pointer1 = wcstok(str, delimiter1);
    int k=0;
    m_MatrixOffeneAnfragen[i][k] = pointer1;
    while(pointer1=wcstok(NULL, delimiter1))
    {
    k++;
    m_MatrixOffeneAnfragen[i][k] = pointer1;
    }

    m_ControllList.AddString( m_MatrixOffeneAnfragen[i][0]+L" "+ m_MatrixOffeneAnfragen[i][1]);
    j++;
    datei.Close();
    }
    UpdateData(false);
    return TRUE; // return TRUE unless you set the focus to a control
    // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
    }

    Hast Du vielleicht 1..2 Tipps wo man solche Dinge vernuenftig nachlesen kann?
    Haben mehrere Buecher aber leider nicht fuer eMbedded.

    Ich kann gar nicht oft genug DANKE sagen....

    Guenni



  • Der Fehler muss im oberen Bereich liegen, da wir direkt dahinter die ausgelesene Information auf dem Display versuchsweise ausgeben
    UND DA KOMMT SCHON SCHROTT RAUS >> []10024KDneu.txt << !!!!!!



  • Servus,

    hab das mal so halb mitverfolgt. Was mir nicht ersichtlich ist wo holt er sich denn den Dateinamen? Gib mir mal die Anweisung oder markiere sie in dem Quelltext und benutze bitte CodeTags (Das sind die kleinen Buttons unterhalb des Eingabe fensters. Einmal auf C++ geklickt, quelltext schreiben und danach nochmal draufklick) dann kann man das besser lesen.

    Hellsgore



  • BOOL COffeneAnfragenAuftragswahl::OnInitDialog() 
    { 
    CDialog::OnInitDialog(); 
    
    int i=0,j=0,zahl=0; 
    WCHAR *Dateien[100]; 
    WCHAR *pointer; 
    CString ExistDateien =L"Daten\\Neukunden\\ExistDateienNeu.txt";   //////////////HIER STEHT DAS VERZEICHNIS DER DATEI IN WELCHER SICH DIE NAMEN DER ZU OEFFNENDEN DATEIEN LIEGEN/////////////////////////
    
    CFile ExDatei(ExistDateien,CFile::modeRead); 
    WCHAR token[1000]; 
    WCHAR delimiter[] =L"~"; 
    ExDatei.Read(token, sizeof(token)); 
    pointer = wcstok(token, delimiter);         ////////////////HIER SCHREIBT ER DEN DATEINAMEN IN POINTER REIN //////////////////[cpp]
    
    Dateien[i] = pointer; 
    
    // m_Dateien[i] = Dateien[i]; 
    
    while(pointer=wcstok(NULL, delimiter)) 
    { 
    i++; 
    Dateien[i] = pointer; 
    // m_Dateien[i] = Dateien[i]; 
    } 
    m_AnzahlAuftraege =i; 
    ExDatei.Close(); 
    //CString test = Dateien[0]; 
    //m_ControllList.AddString( test);
    

    for (i=0;i< m_AnzahlAuftraege;i++)
    {
    WCHAR str[1000];
    //CString end;
    //end.Format('%.i',i);
    CString dat =Dateien[i];
    dat =L"Daten\\Neukunden\" +dat;// ÄNDERN
    CFile datei(dat, CFile::modeRead);
    datei.Read(str, sizeof(str));
    WCHAR delimiter1[] =L"~";
    WCHAR *pointer1;
    pointer1 = wcstok(str, delimiter1);
    int k=0;
    m_MatrixOffeneAnfragen[i][k] = pointer1;
    while(pointer1=wcstok(NULL, delimiter1))
    {
    k++;
    m_MatrixOffeneAnfragen[i][k] = pointer1;
    }

    m_ControllList.AddString( m_MatrixOffeneAnfragen[i][0]+L" "+ m_MatrixOffeneAnfragen[i][1]);
    j++;
    datei.Close();
    }
    UpdateData(false);
    return TRUE; // return TRUE unless you set the focus to a control
    // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
    }

    hoffe das ist verstaendlich 🙂



  • > ⚠ ENTWARNUNG ⚠ <<<<<<<<<<<<

    Wir haben festgestellt, dass wir die Dateien weiterhin nach Oeffnen in char[] schreiben koennen, da nur ganz am Anfang 1 Quadrat zu viel ist und dieses bekaempfbar ist. :p
    Dieses schneiden wir dann nach Umwandlung nach CString einfach weg und speichern dann die spaeter neu generierte Datei in UNICODE wieder ab.

    Das funzt!!! 👍 👍 👍

    DANKE an Hellsgore und insbesondere an MFK!!!!!!
    Ohne Euch wuerden wir ganz schoen auf dem Schlauch stehen.

    Guenni 😃


Anmelden zum Antworten