StringGrid RowCound setzen



  • Dann überprüfe mal, ob du nicht einen Speicherüberschreiber hast, also ob die Zeigerwerte von StringGrid1 und list (noch) korrekt sind (am besten per Einzelschritt im Debugger).



  • abcd schrieb:

    Der Fehler kommt beim:

    StringGrid1->RowCount = list -> Count+1;

    Nimm mal die Leerzeichen weg, das es so aussieht:

    StringGrid1->RowCount = list->Count+1;
    


  • Es geht hier um einen Laufzeitfehler:

    abcd schrieb:

    Fehler:
    Zugriffsverletzung bei Adresse...in Modul Datei.exe. Lesen von Adresse...

    Bzgl. der Leerzeichen ist es aber vollkommen egal, ob (und wieviele) davon vorhanden sind, nur "->" muß zusammengeschrieben sein.



  • Ich habe jetzt ein neues Projekt angelegt, damit läuft die Geschichte.
    Allerding nur kleiner Teil.

    Sobald ich in der Form1 was in die Form 2 schreibe, dann geht das Theater los.

    Die Units sind jeweils eingebunden.

    z.B. in der Unit1:

    Form2->Edit6->Text="ASDDA"; //Hier kommt der Fehler.



  • Wie schon gesagt, nutze den Debugger und schau dir deine Variablen an. Sind die Zeiger gültig? Ansonsten musst du einfach mehr Code zeigen. Am besten ein minimales Beispiel welches den Fehler zeigt.
    Wenn in der gezeigten Zeile eine Zugriffsverletzung auftritt ist entweder Form2 oder Edit6 kein gültiger Zeiger.



  • Th69 schrieb:

    Es geht hier um einen Laufzeitfehler:

    abcd schrieb:

    Fehler:
    Zugriffsverletzung bei Adresse...in Modul Datei.exe. Lesen von Adresse...

    Bzgl. der Leerzeichen ist es aber vollkommen egal, ob (und wieviele) davon vorhanden sind, nur "->" muß zusammengeschrieben sein.

    Volle Zustimmung, ich dachte, möglicherweise könnte es daran liegen, das der Compiler ev. den Inhalt der Adresse von der Eigenschaft list->Count plus 1 lesen will und das zu einer Zugriffsverletzung führen könnte, aber wie gesagt, das war reine Spekulation meinerseits, da ja die propertys beim C++Builder nicht Standard C++ sind.
    😉 😉

    @abcd:
    Wenn du in der FormCreate Methode von Form1 etwas in Form2 (bzw. eines seiner Komponenten) schreiben willst, kann das durchaus sein, denn wenn Form1 vor Form2 erzeugt wird, dann gibt es zu diesen Zeitpunkt halt noch kein Form2 Objekt.
    Eine mögliche Lösung für so einen Fall:
    Automatische Formerstellung für Form2 deaktivieren und Form2 in FormCreate von Form1 erzeugen



  • oder das ganze erst in OnShow machen. Da gibt es die Dialoge auf jedem Fall.



  • Hallo,

    sorry für die späte Antwort.

    Also, wenn ich das Tool auf Windows 7 compiliere, dann geht es.
    Unter Windows 10 kommen nur Probleme.

    Auch die erste Zeile von der StringList wird im StringGrid unter Windows 10 nicht angezeigt, in Windows 7 ist sie da. Getestet mit der .exe-Datei.

    Ich schreibe das Programm mal komplett neu.

    Oder muss unter Windows 10 was eingestellt werden???



  • Gerade habe ich festgestellt, dass wenn ich im StringGrid unter Option, einige Einstellungen ändere, dass dann die Zugriffsverletzung kommt.
    Bei Windows 10...



  • Welche Version des C++ Builder verwendest du?



  • Den kostenlosen con Codegear Builder 10.2


Anmelden zum Antworten