AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array und negativ werte.

Ein Thema von EWeiss · begonnen am 30. Apr 2017 · letzter Beitrag vom 1. Mai 2017
Antwort Antwort
Seite 2 von 3     12 3      
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: Array und negativ werte.

  Alt 30. Apr 2017, 17:40
Nur so aus Neugierde... hast du mal Graphics32 verwendet? Oder schreibst du etwas für die fmx Welt?
Nein
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

Geändert von EWeiss (30. Apr 2017 um 17:42 Uhr)
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Array und negativ werte.

  Alt 30. Apr 2017, 19:03
Ich möchte ein Array mit negativ werten anlegen.
Geht es Dir daraum das dass Array tatsächlich negative Indicies unterstützt - das geht nicht - oder nur um den Zugriff darauf?

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:

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;
Vollkommen ungetestest. Zu verwenden wäre das dann so :

Delphi-Quellcode:

var a : TNegativeArray;

begin
 a := TNegativeArray.Create(100); // Index läuft von -100 bis 0
 a[-1] := Montag;
end;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: Array und negativ werte.

  Alt 30. Apr 2017, 19:11
Zitat:
das geht nicht
ja in Delphi in VB6 schon so wie ich mich noch erinnern kann.

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:
const
  ID_LEFT = -1;
  ID_RIGHT = -2;
definiert.

Dann lade ich das Bitmap auf diese weise.
Delphi-Quellcode:
  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);
Nun das würde in VB6 funktionieren aber nicht in Delphi.
Deshalb ist meine Denkweise dahingehend wohl falsch.
Das!
Delphi-Quellcode:
const
  ID_LEFT = 1;
  ID_RIGHT = 2;
stellt kein Problem dar.
Ja ich weis das ein Array in Delphi bei 0 anfängt. (Ich wollte es aber ändern)

gruss

Geändert von EWeiss (30. Apr 2017 um 19:22 Uhr)
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Array und negativ werte.

  Alt 30. Apr 2017, 20:00
Danke. Die Idee ist nicht schlecht
Aber!

Ich kann "a" nicht als TNegativeArray definieren..
Denn "a" ist schon als a: TSprite (Record) definiert.
Dann schreib halt irgendeinen anderen Bezeichner hin. Da du SP verwendest schreib halt

Delphi-Quellcode:

TYPE 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;
und verwende das ganze so

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ö
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: Array und negativ werte.

  Alt 30. Apr 2017, 20:06
Supi ja so könnte es gehen
Danke für deine Mühe.

werde es mal testen.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

AW: Array und negativ werte.

  Alt 30. Apr 2017, 20:17
Habe es mal eingebaut.

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.
Data[index: Integer]: TSprite read getData write setData; default;
gruss

Geändert von EWeiss (30. Apr 2017 um 20:38 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: Array und negativ werte.

  Alt 30. Apr 2017, 20:39
Irgendwie will es nicht so recht.

Delphi-Quellcode:
procedure MoveIcon(Offset: integer);
var
  K: integer;
begin
  for K := -1 downto LBOUND do
    sp[K].x := sp[K].x + Offset;

end;
Der linken Seite kann nichts zugewiesen werden.

wenn ich das property so auslege.
Data[index: Integer]: TSprite read getData write setData; default;

gruss
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Array und negativ werte.

  Alt 30. Apr 2017, 20:49
Habe es mal eingebaut.

Data[index: Integer]: Variant read getData write setData; default; Hoffe mal das Variant korrekt ist.
Nein ist es nicht. Das

 Data[Index : Integer] : Irgendwas Stammte noch aus dem Beispiel davor. Korrekt wäre

 Data[Index : Integer] : TSprite read getData write setData; default; getData und setData sind ja auch mit TSprite deklariert.

Jetzt musst Du schon selbst weitermachen, ich muss los.

cu Ha-Jö
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Array und negativ werte.

  Alt 30. Apr 2017, 20:55
Irgendwie will es nicht so recht.

Delphi-Quellcode:
procedure MoveIcon(Offset: integer);
var
  K: integer;
begin
  for K := -1 downto LBOUND do
    sp[K].x := sp[K].x + Offset;

end;
Der linken Seite kann nichts zugewiesen werden.

wenn ich das property so auslege.
Data[index: Integer]: TSprite read getData write setData; default; gruss
Mach aus TSprite eine Klasse anstelle eines Records dann gehts.

cu Ha-Jö
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#20

AW: Array und negativ werte.

  Alt 30. Apr 2017, 21:00
Zitat:
Nein ist es nicht. Das
Deshalb hatte ich es aus kommentiert da ich selbst darauf gekommen bin

Zitat:
Mach aus TSprite eine Klasse anstelle eines Records dann gehts.
Ok werde es testen

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 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