![]() |
AW: Array und negativ werte.
Zitat:
Ich schreibe eine Anwendung in der beim start alle auf dem Desktop befindliche Verknüpfungen versteckt und dann zu einer Bar addiert werden. Ich arbeite mit GDIPlus ohne Fremdkomponente. gruss |
AW: Array und negativ werte.
Zitat:
Du könntest die Indicies entweder mit einer (inline) Funktion mappen oder das Array in eine Klasse / Record packen. Also ungefähr so :
Delphi-Quellcode:
Vollkommen ungetestest. Zu verwenden wäre das dann so :TYPE irgendwas = (Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag); TNegativeArray = class(TObject) private maxVal : Integer; fdata : array of irgendwas; function getData(index : Integer) : irgendwas; inline; procedure setData(index : Integer; aData : irgendwas); inline; public Constructor Create(aLenght : Integer); Destructor Destroy; override; property Data [ index : Integer ] : Irgendwas read getData write setData; default; end; implementation function TNegativeArray.getData(index : Integer) : irgendwas; begin assert(index<=0); result := fData[abs(index)]; end; procedure TNegativeArray.setData(index : Integer; aData : irgendwas); begin assert(index<=0); fData[abs(index] := aData; end;
Delphi-Quellcode:
var a : TNegativeArray; begin a := TNegativeArray.Create(100); // Index läuft von -100 bis 0 a[-1] := Montag; end; |
AW: Array und negativ werte.
Zitat:
Danke. Die Idee ist nicht schlecht ;) Aber! Ich kann "a" nicht als TNegativeArray definieren.. Denn "a" ist schon als a: TSprite (Record) definiert. (wobei "a" nur ein Beispiel hier verwendet wird) Sagen wir mal ich habe ein Bitmap das sich Links auf meiner Form befindet. Der Index für dieses Bitmap ist mit
Delphi-Quellcode:
definiert.
const
ID_LEFT = -1; ID_RIGHT = -2; Dann lade ich das Bitmap auf diese weise.
Delphi-Quellcode:
Nun das würde in VB6 funktionieren aber nicht in Delphi.
sp[ID_LEFT].x := 0;
sp[ID_LEFT].y := YMIN_SIZE - 25; sp[ID_LEFT].opacity := 128; sp[ID_LEFT].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'Left.png', sp[ID_LEFT].w, sp[ID_LEFT].h); Deshalb ist meine Denkweise dahingehend wohl falsch. Das!
Delphi-Quellcode:
stellt kein Problem dar.
const
ID_LEFT = 1; ID_RIGHT = 2; Ja ich weis das ein Array in Delphi bei 0 anfängt. (Ich wollte es aber ändern) gruss |
AW: Array und negativ werte.
Zitat:
Delphi-Quellcode:
und verwende das ganze soTYPE TSprite = record x: Integer; y: Integer; w: Integer; h: Integer; visible: Bool; end; TNegativeArray = class(TObject) private maxVal : Integer; fdata : array of TSprite; function getData(index : Integer) : TSprite; inline; procedure setData(index : Integer; aData : TSprite); inline; public Constructor Create(aLenght : Integer); Destructor Destroy; override; property Data [ index : Integer ] : Irgendwas read getData write setData; default; end; implementation Constructor TNegativeArray.Create(aLenght : Integer); begin inherited; SetLength(fdata,aLength); end; function TNegativeArray.getData(index : Integer) : TSprite; begin assert(index<=0); result := fData[abs(index)]; end; procedure TNegativeArray.setData(index : Integer; aData : TSprite); begin assert(index<=0); fData[abs(index] := aData; end;
Delphi-Quellcode:
const ID_LEFT = -1; ID_RIGHT = -2; var sp : TNegativeArray; // Sprite Stack begin sp := TNegativeArray.Create(3); // Hat Element -1, -2 _und_ 0 sp[ID_LEFT].x := 0; .... end. cu Ha-Jö |
AW: Array und negativ werte.
Supi ja so könnte es gehen ;)
Danke für deine Mühe. werde es mal testen. gruss |
AW: Array und negativ werte.
Habe es mal eingebaut.
Delphi-Quellcode:
Data[index: Integer]: Variant read getData write setData; default;
Hoffe mal das Variant korrekt ist. Allerdings bekomme ich Fehler Create inherited entfernt.. [DCC Fehler] E2008 Inkompatible Typen getData.. [DCC Fehler] E2008 Inkompatible Typen setData.. [DCC Fehler] E2008 Inkompatible Typen Hmm ja getData TSprite sollte dann wohl so aussehen.
Delphi-Quellcode:
Data[index: Integer]: TSprite read getData write setData; default;
gruss |
AW: Array und negativ werte.
Irgendwie will es nicht so recht.
Delphi-Quellcode:
Der linken Seite kann nichts zugewiesen werden.
procedure MoveIcon(Offset: integer);
var K: integer; begin for K := -1 downto LBOUND do sp[K].x := sp[K].x + Offset; end; wenn ich das property so auslege.
Delphi-Quellcode:
Data[index: Integer]: TSprite read getData write setData; default;
gruss |
AW: Array und negativ werte.
Zitat:
Delphi-Quellcode:
Stammte noch aus dem Beispiel davor. Korrekt wäre
Data[Index : Integer] : Irgendwas
Delphi-Quellcode:
getData und setData sind ja auch mit TSprite deklariert.
Data[Index : Integer] : TSprite read getData write setData; default;
Jetzt musst Du schon selbst weitermachen, ich muss los. cu Ha-Jö |
AW: Array und negativ werte.
Zitat:
cu Ha-Jö |
AW: Array und negativ werte.
Zitat:
Zitat:
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 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