[Delphi] Pointer Casten

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von myth2806, 15. Mai 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. Mai 2008
    Pointer Casten

    Heho,

    ich will ein array anlegen in dem pointer von vorher erstellten objekten gespeichert werden sollen. diese objekte sind allerdings alle von verschiedenen klassen. wenn ich jetzt eins der objekte auslesen und eine prozedur verwenden will bekomme ich nur diesen Error:

    Code:
    [Fehler] Unit1.pas(182): Record, Objekt oder Klassentyp erforderlich
    
    die betroffene Zeile:
    Code:
    objects[objectsLength-1]^.resize(x,y);
    
    objectsLength is ne zählervariable... muss nicht weiter bearbeitet werden.
    so ist die addresse ins array gekommen:

    Code:
    newObject := TLinie.create(PaintBox1.Canvas, X, Y);
    objects[objectsLength] := @newObject;
    

    wie mach ichs also richtig?

    danke schonmal

    greez myth
     
  2. 16. Mai 2008
    AW: Pointer Casten

    Das sagt eigentlich alles, der Compiler hat keine Ahnung was der Pointer für ein "Typ" ist,
    deswegen musst du zuerst einen Zeigertyp des Objects definieren (in deinem Fall):

    Code:
    type PLinie= ^TLinie;
    
    und Anschliessend kannst du deinen Pointer dann so casten:
    Code:
    PLinie( objects[objectsLength-1] )^.resize(x,y);
    
    Oder du definierst dein Array direkt als PLinie, dann kannst du auch dein Code verwenden.

    Mfg Rushh0ur
     
  3. 16. Mai 2008
    AW: Pointer Casten

    alles klar vielen Dank.

    mein Array kann halt nicht dierekt als PLinie definieren weil in das Array viel unterschedliche Typen reinsollen.


    greez myth

    //closed
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.