Zugriffsverletzung beim lesen... Gültigkeitsbereich?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zugriffsverletzung beim lesen... Gültigkeitsbereich?

    Hi ich habe folgenden Quelltext:

    Quellcode

    1. //---------------------------------------------------------------------------
    2. #include <vcl.h>
    3. #pragma hdrstop
    4. #include "IdBaseComponent.hpp"
    5. #include "IdComponent.hpp"
    6. #include "IdHTTP.hpp"
    7. #include "IdTCPClient.hpp"
    8. #include "IdTCPConnection.hpp"
    9. #include "sms_unit.h"
    10. #include "fstream.h"
    11. #include <iostream>
    12. //---------------------------------------------------------------------------
    13. #pragma package(smart_init)
    14. #pragma resource "*.dfm"
    15. TForm1 *Form1;
    16. int AddSize;
    17. int len;
    18. int x;
    19. int Size = 1;
    20. String* adds;
    21. String* Searchword;
    22. String Meldung;
    23. //---------------------------------------------------------------------------
    24. __fastcall TForm1::TForm1(TComponent* Owner)
    25. : TForm(Owner)
    26. {
    27. }
    28. //---------------------------------------------------------------------------
    29. void __fastcall TForm1::Button1Click(TObject *Sender)
    30. {
    31. Meldung = Searchword[5];
    32. }
    33. void __fastcall TForm1::FormCreate(TObject *Sender)
    34. {
    35. //TIdHTTP *IdHTTP1 = new TIdHTTP(NULL); // Instanz erstellen
    36. IdHTTP1->HandleRedirects=true;
    37. fstream File2("List.dat", ios::in|ios::binary);
    38. if (File2.is_open())
    39. {
    40. Box->Items->Add("List.dat wurde geöffnet");
    41. // cout << "List.dat has been opened" << endl << endl;
    42. File2.read((char*)&Size, sizeof(Size));
    43. // cout << "The Searchwords are:" << endl << endl;
    44. }
    45. String* Searchword = new String[Size+1];
    46. if (File2.is_open()) //ändern!!!!!
    47. {
    48. for(int i=0;i < Size; i++)
    49. {
    50. File2.read((char*)&len, sizeof(len));
    51. char* buffer = new char[len+1];
    52. File2.read(buffer,len);
    53. buffer[len] = '\0';
    54. Searchword[i] = buffer;
    55. delete[] buffer;
    56. // cout << Searchword[i].c_str() << endl;
    57. }
    58. }
    59. File2.close();
    60. fstream File3("adds.dat", ios::in|ios::binary);
    61. if (File3.is_open())
    62. {
    63. Box->Items->Add("adds.dat wurde geöffnet");
    64. File3.read((char*)&AddSize, sizeof(AddSize));
    65. }
    66. String* adds = new String[AddSize+1];
    67. if (File3.is_open()) //ändern!!!!!
    68. {
    69. for(int i=0;i < AddSize; i++)
    70. {
    71. File3.read((char*)&len, sizeof(len));
    72. char* buffer = new char[len+1];
    73. File3.read(buffer,len);
    74. buffer[len] = '\0';
    75. adds[i] = buffer;
    76. delete[] buffer;
    77. // cout << adds[i].c_str() << endl;
    78. }
    79. }
    80. File3.close();
    81. }
    82. //---------------------------------------------------------------------------
    Alles anzeigen


    Das Problem ist das wenn ich auf den Button drücke
    die Meldung kommt "Zugriffsverletzungen bei Adresse ..."
    Sind meine Zeiger nicht mehr gültig??
    Wenn ja wie kann ich das beheben?
    Ich will nicht dass die Dateien bei jedem druck auf den Knopf geladen werden, sondern nur einmal am Anfang...

    Mit Zeigern muss ich arbeiten da nicht von vornerein feststeht wie groß die Datei ist...

    Scheint irgendwas mit dem Gültigkeitsbereich tun zu haben...
    Könnt ihr mir helfen?

    Wäre echt sehr dankbar!!!!!!!!!


    Schonmal vielen Dank!


    MfG Straightflush

    Quellcode