Hallo,
nach ein paar gröberen Änderungen, die ich ungern alle löschen und auf den letzten Backup-Stand zurückgehen würde, stürzt mein Programm schon beim Starten, noch bevor überhaupt das OnCreate des Hauptformulars aufgerufen wird, mit einer Kryptischen Fehlermeldung ab:
Projekt Fitness hat Exception-Klasse EClassnotfound ausgelöst mit der Meldung: Class TStringgrid not found.
Grids ist in der Uses Klausel der Unit des Hauptformulars, und auch sonst bin ich mir keiner Schuld bewusst...
Hat jemand eine Idee, was da sein könnte?
Stringgrid ist "verschwunden"
-
- Beiträge: 463
- Registriert: Do 8. Jun 2017, 18:21
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
- CPU-Target: 64Bit
- Wohnort: Wien
Stringgrid ist "verschwunden"
Zuletzt geändert von braunbär am Do 8. Okt 2020, 23:35, insgesamt 1-mal geändert.
Re: Stringgrid ist "verschwunden"
Da hast du wohl etwas wie
aus dem Code gelöscht.
Code: Alles auswählen
StringGrid1: TStringGrid;
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Stringgrid ist "verschwunden"
Hi!
Das hört sich eher nach ner zerschossenen lfm Datei an.
In dem Project-Verzeichnis gibt's n Verzeichnis backup.
Guck mal nach, ob es mit dem backup der lfm Datei besser funktioniert.
Original nicht löschen - nur umbennen!
Und dann die Datei aus eine Verzeichnis-Ebene höher kopieren.
Winni
Das hört sich eher nach ner zerschossenen lfm Datei an.
In dem Project-Verzeichnis gibt's n Verzeichnis backup.
Guck mal nach, ob es mit dem backup der lfm Datei besser funktioniert.
Original nicht löschen - nur umbennen!
Und dann die Datei aus eine Verzeichnis-Ebene höher kopieren.
Winni
Re: Stringgrid ist "verschwunden"
Oder anders herum: In der pas-Datei wurde die "StringGrid1: TStringGrid" aus dem Interface von TForm1 gelöscht. Ich habe gerade auf ein leeres Formular ein StringGrid geklickt, dann diese Zeile aus der pas-Datei gelöscht. Zur Laufzeit erhalte ich dann genau die Fehlermeldung, dass die Klasse TStringGrid nicht gefunden wird. Denn in der lfm-Datei ist das Stringgrid ja noch vorhanden, aber nachdem es im pas fehlt, kann die IDE damit nichts anfangen.
Öffne die lfm-Datei in einem externen Editor und suche nach "TStringGrid". Damit weißt du den Namen des Grids, z.B. "SuperGrid". Öffne nun die pas-Datei und füge oben die Zeile "SuperGrid: TStringGrid" hinzu.
Öffne die lfm-Datei in einem externen Editor und suche nach "TStringGrid". Damit weißt du den Namen des Grids, z.B. "SuperGrid". Öffne nun die pas-Datei und füge oben die Zeile "SuperGrid: TStringGrid" hinzu.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Stringgrid ist "verschwunden"
Hi!
Ja das stimmt.
Das ist ein ganz heikles Thema.
Komponenten, die mittels des Designer hinzugefügt wurden, soll man auch
tunlichst mittels des Designers löschen. Ansonsten spielt die IDE gerne mal verrückt.
UND: Vor dem Löschen der Komponente erstmal die zugehörigen Proceduren vom jeweiligen
On.... event leermachen. Und dann speichern. Wenn man intelligente Einstellungen hat, ist die
Procedure und die Verbindung zum event gelöscht.
Wenn man das nicht macht, hat man z.B. keinen Button1 mehr, aber als Leiche geistert noch immer
Button1click im Source rum.
Wenn man die Logik geblickt hat, sollte da nicht viel Mist passieren.
Aber für meinen Geschmack wird da zu wenig überprüft gegen Newbie-Fehler.
Wie Du gerade bewiesen hast.
Winni
Ja das stimmt.
Das ist ein ganz heikles Thema.
Komponenten, die mittels des Designer hinzugefügt wurden, soll man auch
tunlichst mittels des Designers löschen. Ansonsten spielt die IDE gerne mal verrückt.
UND: Vor dem Löschen der Komponente erstmal die zugehörigen Proceduren vom jeweiligen
On.... event leermachen. Und dann speichern. Wenn man intelligente Einstellungen hat, ist die
Procedure und die Verbindung zum event gelöscht.
Wenn man das nicht macht, hat man z.B. keinen Button1 mehr, aber als Leiche geistert noch immer
Button1click im Source rum.
Wenn man die Logik geblickt hat, sollte da nicht viel Mist passieren.
Aber für meinen Geschmack wird da zu wenig überprüft gegen Newbie-Fehler.
Wie Du gerade bewiesen hast.
Winni
-
- Beiträge: 463
- Registriert: Do 8. Jun 2017, 18:21
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
- CPU-Target: 64Bit
- Wohnort: Wien
Re: Stringgrid ist "verschwunden"
Danke für die Hinweise, die mich zur Lösung gebracht haben - Ich habe das Stringgrid irrtümlich von published nach public übersiedelt. Zur Laufzeit stürzt er dann auf die Art ab.
Auf die Idee bin ich erst nicht gekommen, weil ich dachte, der einzige Unterschied zwischen public und published wäre, dass die published Objekte im OI angezeigt werden, und deshalb habe ich darauf nicht geachtet. Offenbar funktioniert dann aber auch zur Laufzeit beim Laden der Objekteigenschaften irgend etwas nicht richtig - nicht einmal überraschend, wenn man drüber nachdenkt.
Auf die Idee bin ich erst nicht gekommen, weil ich dachte, der einzige Unterschied zwischen public und published wäre, dass die published Objekte im OI angezeigt werden, und deshalb habe ich darauf nicht geachtet. Offenbar funktioniert dann aber auch zur Laufzeit beim Laden der Objekteigenschaften irgend etwas nicht richtig - nicht einmal überraschend, wenn man drüber nachdenkt.
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Stringgrid ist "verschwunden"
Der Effekt von published ist eben genau der, dass die Typinformationen generiert werden, welche das Streaming System der RTL braucht, um solche Felder zu (de)serialisieren. Theoretisch könnte man auch einen Designer entwickeln, der mit generierten Code und Feldern in private arbeitet (der Designer von fpGUI macht das zum Beispiel).
FPC Compiler Entwickler