TMemoryStream speichern



  • hola leute

    folgendes problem:
    ich moechte den inhalt eines MemoryStreams in ein file speichern.
    hab es mit folgendem code probiert

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      test *field=new test;
      void *v;
      TMemoryStream *test1=new TMemoryStream;
      liste->Items->SaveToStream(test1);
    
      test1->Read(v,test1->Size);
      field->str1="Test1";
      field->str2="Test2";
      field->str3="Test3";
      TFileStream *datei=new TFileStream("tescht.txt",fmCreate);
      v=(void*)field;
      datei->WriteBuffer(field->str1.c_str(),field->str1.Length()+1);
      datei->WriteBuffer(field->str2.c_str(),field->str2.Length()+1);
      datei->WriteBuffer(field->str3.c_str(),field->str3.Length()+1);
      datei->WriteBuffer(test1,test1->Size);
      delete datei;
    }
    

    "liste" ist ne TListBox die ich mit ein paar woertern gefuellt habe.
    wenn ich mir dann das file "tescht.txt" im editor angucke, steht dort wo der stream abgespeichert werden sollte, nur mist.

    vielleicht kann mir da ja wer weiter helfen

    Deadman



  • Du hast dir die Methoden von TMemoryStream schon angesehn oder?

    -junix



  • ja hab ich.

    hab im uebrigen den code von nem delphi project abgeguckt. die bcb hilfe hab ich mir auch angesehen.
    test1->position=0; hab ich auch schon gesetzt. hab das mal mit der listbox getestet. wenn ich den stream wieder in die listbox schreibe, passt alles. nur beim speichern klappts nich

    Deadman



  • derzeitiges versuchsstadium:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      test *field=new test;
      void *v;
      TMemoryStream *test1=new TMemoryStream;
      liste->Items->SaveToStream(test1);
      liste->Clear();
      test1->Position=0;
      liste->Items->LoadFromStream(test1);
    
      test1->Read(v,test1->Size);
      field->str1="Test1";
      field->str2="Test2";
      field->str3="Test3";
      TFileStream *datei=new TFileStream("tescht.txt",fmCreate);
      v=(void*)field;
      test1->Position=0;
      datei->WriteBuffer(field->str1.c_str(),field->str1.Length()+1);
      datei->WriteBuffer(field->str2.c_str(),field->str2.Length()+1);
      datei->WriteBuffer(field->str3.c_str(),field->str3.Length()+1);
      datei->WriteBuffer(test1,test1->Size);
      delete datei;
    }
    


  • oki doki, habs nun gerafft...
    mercy

    Deadman


Anmelden zum Antworten