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 Create-Problem bei Komponentenportierung (XMLRTL???) (https://www.delphipraxis.net/48242-create-problem-bei-komponentenportierung-xmlrtl.html)

DaWalt 22. Jun 2005 17:07


Create-Problem bei Komponentenportierung (XMLRTL???)
 
Hallo Allerseits!
Hab da mal ne Frage zur Komponenten-Entwicklung, respektive zum Umstricken von Delphi7-Komponenten in Delphi 2005-Packages.
Und zwar geht es darum, dass meine 2005 Personal-Version folgenden Text nicht übersetzen mag, sondern den Fehler "Der linken Seite kann nichts zugewiesen werden" ausgibt:

Delphi-Quellcode:
type
  TBigLEDBitmap = class
  public
    BigLED_Pics: TBitmap;   { BigLED Bitmap matrix - all colours, all states }
    BigLED_List: TList;     { List to keep track of BigLEDs created }
    Trans_Color : TColor; { Bottom left pixel of BigLED Bitmap matrix }
    constructor Create;
    destructor Destroy; override;
end;

const
  BigLEDBitmap : TBigLEDBitmap = nil;
  NumRows = 4;                { BigLED_PICS bitmap has four 'state' rows }
  bmpHeight = 26;             { Height of individual BigLED bitmap }
  bmpWidth = 26;              { Width of an individual BigLED bitmap }
  CaptionSpacing = 5;         { Spacing of Caption from BigLED in BigLEDLabel}

constructor TBigLEDBitmap.Create;
begin
  inherited Create;
  BigLED_Pics := TBitmap.Create;
  BigLED_Pics.Handle:= LoadBitmap(hInstance, 'BIGLED_PICS');
  Trans_Color := BigLED_PICS.TransparentColor;
  BigLED_List := TList.Create;
end;

destructor TBigLEDBitmap.Destroy;
begin
  ...
end;

constructor TBigLED.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
{ If this is the first BigLED then create the BigLED Bitmap and List object }
  if BigLEDBitmap = nil then
    BigLEDBitmap := TBigLEDBitmap.Create; //                       <- Hier gibt´s den Fehler.
Für mich sieht das nach einem ganz gewöhnlichen Konstruktor-Aufruf aus, der bislang (Delphi7) auch nie ein Problem war.
Liegt das vielleicht daran, dass ich, wie in einem Tut zur Installation des Indy-Packages beschrieben, statt der wirklichen XMLRTL nur die Fake-XMLRTL installiert habe und doch die richtige brauche? Oder mache ich einfach nur was falsch??? In der Hilfe nachgeschaut, sieht der Konstruktor-Aufruf genauso aus und das Create im Aufruf des TBigLEDBitmap.Create wird ja auch anstandslos übersetzt!??? Bin also ein bischen ratlos.
Vielen Dank für Tips

DaWalt

Bernhard Geyer 22. Jun 2005 17:16

Re: Create-Problem bei Komponentenportierung (XMLRTL???)
 
BigLEDBitmap ist als cons definiert.
Und solange du nicht den Compilerschalter "Zuweisbare typisierte Konstanten" aktivierst wird der Compiler meckern.

Robert Marquardt 22. Jun 2005 17:18

Re: Create-Problem bei Komponentenportierung (XMLRTL???)
 
Einer const kann man nichts zuweisen.
Wer es trotzdem tut begeht eine strafwuerdige Tat. Neuerdings bestraft einen der Compiler defaultmaessig.
Delphi-Quellcode:
var
  BigLEDBitmap : TBigLEDBitmap = nil;
erledigt das Problem.

DaWalt 23. Jun 2005 09:49

Re: Create-Problem bei Komponentenportierung (XMLRTL???)
 
Vielen Dank, das war´s natürlich. Manchmal is man einfach betriebsblind - peinlicher Fehler!!! :roll:
Eigentlich erstaunlich, dass sich der 7er Compiler darüber nicht beschwert hat.
Gruß aus -> )

DaWalt

alcaeus 23. Jun 2005 09:52

Re: Create-Problem bei Komponentenportierung (XMLRTL???)
 
Zitat:

Zitat von DaWalt
Eigentlich erstaunlich, dass sich der 7er Compiler darüber nicht beschwert hat.

Du kannst auch Delphi 2005 dazu bringen, sich nicht zu beschweren, dies geht per Compilerswitch. Der Unterschied: in Delphi 7 ist die Default-Einstellung "zulassen", in Delphi 2005 "nicht zulassen". IMO ist es aber ein Feature der Sprache, das schon gar nicht reinkommen sollte, und nicht erst durch Compilerswitch verboten werden sollte. Also: einfach immer var benutzen wenn sich was aendern wird ;)

Greetz
alcaeus

jbg 23. Jun 2005 12:21

Re: Create-Problem bei Komponentenportierung (XMLRTL???)
 
Zitat:

Zitat von alcaeus
IMO ist es aber ein Feature der Sprache, das schon gar nicht reinkommen sollte, und nicht erst durch Compilerswitch verboten werden sollte.

Das Feature gibt es schon seit TurboPascal 7. Dort hatte es auch noch eine Bedeutung, da es keine Vorinitialisierten var-Variablen gab. Also hat man das damals per const-Variable erledigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 Uhr.

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