Stringgrid ist "verschwunden"

Rund um die LCL und andere Komponenten
Antworten
braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Stringgrid ist "verschwunden"

Beitrag von braunbär »

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?
Zuletzt geändert von braunbär am Do 8. Okt 2020, 23:35, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Stringgrid ist "verschwunden"

Beitrag von theo »

Da hast du wohl etwas wie

Code: Alles auswählen

    StringGrid1: TStringGrid;  
aus dem Code gelöscht.

Benutzeravatar
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"

Beitrag von Winni »

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

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Stringgrid ist "verschwunden"

Beitrag von wp_xyz »

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.

Benutzeravatar
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"

Beitrag von Winni »

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

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Stringgrid ist "verschwunden"

Beitrag von braunbär »

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.

PascalDragon
Beiträge: 825
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"

Beitrag von PascalDragon »

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

Antworten