Aus Dateien lesen, Zugriffsverletzung



  • Hallo alle miteinander,

    ich habe folgendes Problem:

    void __fastcall TForm1::Button6Click(TObject *Sender)
    {
      Graphics::TBitmap* bmp = new Graphics::TBitmap();
      try
      {
        TFileStream* fst = new TFileStream("Source01.BFB", fmOpenRead);
        try
        {
          for (int i=0;i<MAX ;i++)
          {
            fst->Seek(0, soFromCurrent);
    
            bmp->LoadFromStream(fst);
    
            MyImage[i]->Picture->Assign(bmp);
    
            MyImage[i]->Update();
          }
        }
        __finally
        {
          delete fst;       /* Dieser Code erzeugte eine Zugriffsverletzung */
        }                  /* Warum ?*/
      }
      __finally
      {
        delete bmp;
      }
    }
    

    Ich habe schon einmal ein Array von TImage Objekten erzeugt und darauf zugegriffen. Da hat alles funktioniert.

    Hier scheitert die Sache an dem Eintrag :

    MyImage[i]->Picture->Assign(bmp);
    

    Es kann aber auch sein, dass ich etwas anderes übersehen habe.

    Ich bitte um Eure Mithilfe

    Mit besten Dank im Voraus 🙂

    Edit:
    Code bitte zwischen die Code-Tags setzen. 😉

    [ Dieser Beitrag wurde am 07.07.2003 um 18:29 Uhr von Jansen editiert. ]



  • An alle die helfen wollten,

    ich habe aus Versehen die Zuweisung der TImage Objekte an das Array auf Kommentar gesetzt und es in einer Art Tunnelblick nicht bemerkt.

    Sorry noch mal

    M.f.G



  • Eine frage.

    Wieso ladest Du nicht einfach gleich von einer Datei in die TImage-Komponente
    z.B. mit:

    ...
    MyImage[i]->Picture->LoadFromFile("Source01.BFB");
    ...
    

    oder in die Graphics::TBitmap - falls es notwendig sei - mit:

    ...
    bmp->LoadFromFile("Source01.BFB");
    ...
    


  • Original erstellt von bIce:
    **
    Wieso ladest Du nicht einfach gleich von einer Datei in die TImage-Komponente
    **

    Wahrscheinlich, weil in der Datei mehrere Bilder 'gestreamt' vorliegen!



  • Original erstellt von DerAltenburger:
    Wahrscheinlich, weil in der Datei mehrere Bilder 'gestreamt' vorliegen!

    Kann man dafür denn nicht TImageList::FileLoad() verwenden? (Oder hieß es LoadFile, weiß nicht mehr).



  • Original erstellt von bIce:
    **
    Kann man dafür denn nicht TImageList::FileLoad() verwenden? (Oder hieß es LoadFile, weiß nicht mehr).**

    Neeeeee! Nicht wenn Bilder verschieden gross sind! Oder gar verschiedene Typen - BMP, JPG oder GIF!

    PS: elarom hat nur BMP!

    [ Dieser Beitrag wurde am 07.07.2003 um 21:27 Uhr von DerAltenburger editiert. ]



  • Alles klar (hoffe ich).


Anmelden zum Antworten