Fehler beim Funktions-Zugriff über Zeiger



  • Hallo,

    weis jemand wie ich iin einer lokalen Memberfunktion über Zeiger aus auf eine Funktion zugreifen kann ? Der Quelltext im folgenden bringt mein Rechner zum abstürzen.

    vielen Dank im voraus

    ...
    CFile fileRead(str2, CFile::modeNoTruncate | CFile::modeRead);
    CStdioFile fileWrite(str, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite);
    
    CString* buff2 = NULL;
    fileRead.Read(&buff2, 200);
    
    int nPosFind = buff2->Find("data");
    int pos = nPosFind+4;
    
    length = fileRead.GetLength();
    int max = length;
    ...
    


  • Servus,

    warum benutzt du denn einmal CFile und dann CStdioFile? verstehe ich nicht..... Benutz doch direkt CStdioFile...

    Dort gibs ja auch ein schönes ReadString() und WriteString(). Ansonsten brauchst du z.B. eine Var vom Typ char..

    Bsp:

    char test[100];
    
    CFile fTest;
    fTest.Read(test, 100);
    

    *winke*
    Hellsgore



  • ich brauche leider beide CFile kann ich die Anzahl der auszulesenen Strings bestimmen mit CStdioFile gehts nur Zeilenweise



  • Servus,

    Ja wenn du sowieso schon weisst, wieviele Zeichen du auslesen willst, dann nimm doch einen TCHAR oder char oder WCHAR irgendwas charartiges *g* und gib direkt die Größe an. Ist ja nur ein Bsp. von mir aber sollte funzen. Du kannst ja auch den char in einen CString kopieren und dann die Funcs von CString nutzen. Natürlich kannst du auch wieder den CString in ein Char kopieren z.B. mit strcpy().

    Aber das stimmt ja nicht so ganz was du sagst. Mit CStdioFile kannst du auch bestimmen wieviel er auslesen soll.

    Bsp:

    CStdioFile fTest;
    CString strTest;
    TCHAR tester[200];
    
    fTest.ReadString(strTest, 200);
    
    //der
    fTest.Read(tester,200);
    

    *winke*
    Hellsgore



  • ich würde es gerne aber über den Zeiger machen wenn da was weist wär ich dir dankbar



  • Servus,

    keine Ahnung ob das so richtig ist, habs noch nie gemacht, aber es funzt:

    Bsp.:

    CFile fDatei;
    CString *strLine = new CString();
    fDatei.Read(strLine->GetBuffer(), 200);
    

    Ich kann dir keine Garantie geben ob das so richtig funktioniert oder ob er dir irgendwann abraucht... ⚠

    *winke*
    Hellsgore



  • Servus,

    habs jetzt mal so gemacht:

    CString *strTest = new CString();
    					strTest->GetBufferSetLength(100);
    					sifFile.Read(strTest->GetBuffer(), 100);
    
    					strTest->Delete(1,10);
    					strTest->ReleaseBufferSetLength(100);
    

    Hab mal ein bisschen in der MSDN rumgelesen. Sollte das totaler Schiss sein bitte ich darum mich darüber zu informieren, bin dann auch nicht sauer 😃

    Wie gesagt ich hätte es nicht so gemacht, aber wenn du unbedingt den Zeiger haben willst *g*.

    *winke*
    Hellsgore


Anmelden zum Antworten