Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Nochmal Komponenten und Delphi 12 (https://www.delphipraxis.net/217392-nochmal-komponenten-und-delphi-12-a.html)

Willie1 21. Jun 2025 19:11

Nochmal Komponenten und Delphi 12
 
Hallo Freunde/innen,

ich wollte in meinem Programm noch schnell zwei RadioGroups durch zwei ComboBoxen ersetzen. Sieht besser aus und ist funktionaler. Aber mit schnell ist nicht.

Sobald ich ComboBox auf der Hauptseite einfüge, crasht es hier in einem anderen Fenster:
Delphi-Quellcode:
  TEg        = string[3];
  TErgeb     = record
                  Ergeb: TEg;
                  SptNr: Byte;
                  WoTag: Byte; {Spieltag in der Woche unbekannt=0 1=Fr, 2=Sa ...7=Do}
                end;
Delphi-Quellcode:
type
  TErgebEing = class
    Erg: TErgeb;//<-----------------------
  private
    procedure SetErgebn(Zei,Spa: Integer; Eg: TErgeb);
  public
    property Setzen[Z,S: Integer]: TErgeb write SetErgebn; default;
  end;
Ich habe es gerade bei Delphi 10 ausprobiert. Da kann ich ohne Problem RadioBox durch ComboBox ersetzen. Ich kann auch überhaupt nicht den Zusammenhang sehen.

Nur zur Nachlese: Ich habe mit Delphi 10 und eingeschalteter Bereichsüberprüfung erfolgreich kompilieren können. Aber Das Fass ist für mich zu.

Es bestehen offensichtlich doch große Unterschiede zw. D10 und d12.

Gruß Willie.

GueAck 21. Jun 2025 22:01

AW: Nochmal Komponenten und Delphi 12
 
Hallo,

"Crash" verstehe ich so, dass zur Laufzeit ein Abbruch passiert. Die Komponente Combobox arbeitet wahrscheinlich sehr, sehr korrekt. Ich schätze, es gibt in Deinem Programm noch Bezüge auf die gelöschten Radioboxen und vermutlich sind diese auch noch irgendwo deklariert, auch wenn sie von dem Form weg sind. Ich hatte ähnliche Probleme mit einer älteren Delphi-Version auch mal nach einer umfangreichen Löscherei.

Suche mal (mit einem externen Tool!) in allen (ja, allen) Dateien im Projekt nach den Namen der gelöschten Radiogroups.

Gruß
GuaAck

Zitat:

Zitat von Willie1 (Beitrag 1549592)
Hallo Freunde/innen,

ich wollte in meinem Programm noch schnell zwei RadioGroups durch zwei ComboBoxen ersetzen. Sieht besser aus und ist funktionaler. Aber mit schnell ist nicht.

Sobald ich ComboBox auf der Hauptseite einfüge, crasht es hier in einem anderen Fenster:
Delphi-Quellcode:
  TEg        = string[3];
  TErgeb     = record
                  Ergeb: TEg;
                  SptNr: Byte;
                  WoTag: Byte; {Spieltag in der Woche unbekannt=0 1=Fr, 2=Sa ...7=Do}
                end;
Delphi-Quellcode:
type
  TErgebEing = class
    Erg: TErgeb;//<-----------------------
  private
    procedure SetErgebn(Zei,Spa: Integer; Eg: TErgeb);
  public
    property Setzen[Z,S: Integer]: TErgeb write SetErgebn; default;
  end;
Ich habe es gerade bei Delphi 10 ausprobiert. Da kann ich ohne Problem RadioBox durch ComboBox ersetzen. Ich kann auch überhaupt nicht den Zusammenhang sehen.

Nur zur Nachlese: Ich habe mit Delphi 10 und eingeschalteter Bereichsüberprüfung erfolgreich kompilieren können. Aber Das Fass ist für mich zu.

Es bestehen offensichtlich doch große Unterschiede zw. D10 und d12.

Gruß Willie.


Willie1 22. Jun 2025 10:54

AW: Nochmal Komponenten und Delphi 12
 
Guten Morgen,

Zitat:

[dcc32 Fehler] Fussball_Ergeb.pas(11): E2217 Published-Feld 'Erg' ist weder vom Typ class noch interface
ich war noch die Fehlermeldung schuldig. Ich habe mich missverständlich ausgedrückt. Nein das Projekt lässt sich nicht kompilieren. Ich habe eine ComboBox abgelegt und die Items benannt. Sie hat noch keine Funktionalität.

Ich habe es:
Delphi-Quellcode:
type
  TErgebEing = class
  private
    Erg: TErgeb;
    procedure SetErgebn(Zei,Spa: Integer; Eg: TErgeb);
  public
    property Setzen[Z,S: Integer]: TErgeb write SetErgebn; default;
  end;
So ist es richtig! Der D10 Compiler hat es akzeptiert, D12 nicht. Aber warum es erst ging und dann plötzlich nicht, weiß ich allerdings nicht. Vielleicht wurde es erst jetzt neu kompiliert.

Willie.

blawen 22. Jun 2025 12:59

AW: Nochmal Komponenten und Delphi 12
 
Erg: TErg; ist schlicht am falschen Ort deklariert, dies sollte auch in D10 nicht funktioniert haben.
Delphi-Quellcode:
type
  TErgebEing = class
    Erg: TErgeb;//<-----------------------
  private
    procedure SetErgebn(Zei,Spa: Integer; Eg: TErgeb);
  public
    property Setzen[Z,S: Integer]: TErgeb write SetErgebn; default;
  end;
So ist es korrekt.
Delphi-Quellcode:
type
  TErgebEing = class
  private
    Erg: TErgeb;
    procedure SetErgebn(Zei,Spa: Integer; Eg: TErgeb);
  public
    property Setzen[Z,S: Integer]: TErgeb write SetErgebn; default;
  end;

himitsu 22. Jun 2025 17:03

AW: Nochmal Komponenten und Delphi 12
 
Und jemand hat auch noch am {$M} bzw. {$TYPEINFO} rumgepfuscht.

Normal ist die Standard-Sichbarkeit PUBLIC,
es sei denn jemand aktiviert das vorher und sie ändert sich zu PUBLISHED.

Und für PUBLISHED sind nunmal gewisse höhere Typen "verboten", da dort standardmäßig keine Serialisierung für vorhanden ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz