Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Record zu TStringlist hinzufügen (https://www.delphipraxis.net/193030-record-zu-tstringlist-hinzufuegen.html)

EWeiss 12. Jun 2017 20:22


Record zu TStringlist hinzufügen
 
Ich möchte meinen Record zu einer StringListe hinzufügen.
Delphi-Quellcode:
  TSprite = packed Record
    CtrlName: WideString;
    CtrlIndex: Integer;
    Left: Single;
    Top: Single;
    Width: Integer;
    Height: Integer;
    Scale: Single;
    Opacity: Byte;
    ShellTo: string;
    IconPath: WideString;
    WorkDir: WideString;
    UseLabel: string;
    CmdLine: WideString;
    ShowCmd: longint;
    h_Bitmap: HBitmap;
    Visible: Bool;
  end;
  PSprite = ^TSprite;
Ich muss aber in der Lage sein aus dieser Liste zum Beispiel auf das h_Bitmap zuzugreifen.
Oder würdet ihr etwas anderes verwenden ?

Ich möchte von dem Array TSprite weg und alles über eine Liste regeln.

gruss

SneakyBagels 12. Jun 2017 20:24

AW: Redord zu TStringlist hinzufügen
 
StringListen haben doch das Object-Property oder nicht? Da kann man doch Daten ablegen.

sakura 12. Jun 2017 20:26

AW: Redord zu TStringlist hinzufügen
 
Records sind keine Objekte, daher kannst Du diese nicht in einer StringList speichern. Records werden immer im Ganzen kopiert, nicht nur deren Pointer.

...:cat:...

EWeiss 12. Jun 2017 20:34

AW: Redord zu TStringlist hinzufügen
 
Was sagt mir das jetzt das es nicht funktioniert?
Wie könnte ich denn so was über eine eigene Liste verwirklichen wenn es nicht geht.

Hier ist ein ähnliches Beispiel.
https://stackoverflow.com/questions/...-in-stringlist

NUR! Wie komme ich dann an die einzelnen Objekte des Record in der Liste.

gruss

SneakyBagels 12. Jun 2017 20:36

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Wie könnte ich denn so was über eine eigene Liste verwirklichen wenn es nicht geht.
Benutz statt des Records ein
Delphi-Quellcode:
= class
dann kannst du den Pointer in die StringListe hauen.
Wenn du den Zugriff über den Index nicht brauchst, dann verwende ein TObjectDictionary.
Habe vor Kurzem auch erst umgestellt.

EWeiss 12. Jun 2017 20:39

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von SneakyBagels (Beitrag 1374321)
Zitat:

Wie könnte ich denn so was über eine eigene Liste verwirklichen wenn es nicht geht.
Benutz statt des Records ein
Delphi-Quellcode:
= class
dann kannst du den Pointer in die StringListe hauen.
Wenn du den Zugriff über den Index nicht brauchst, dann verwende ein TObjectDictionary.
Habe vor Kurzem auch erst umgestellt.

Ka ob das mit D2010 so ohne weiteres umsetzbar ist. ;)
Und wenn ich den Record jetzt in eine Class auslagern soll.. dann ist mir das zu viel Arbeit;)

es gibt unter C++ eine möglichkeit in der WinNT.h

Code:
#define CONTAINING_RECORD(address, type, field) ((type *)( \
                                                  (PCHAR)(address) - \
                                                  (ULONG_PTR)(&((type *)0)->field)))
gruss

jaenicke 12. Jun 2017 20:53

AW: Redord zu TStringlist hinzufügen
 
Was enthalten denn die Strings, die in die Stringliste sollen? Willst du darüber die Sprites finden?
Dann könntest du synchron zur Stringlist noch eine TList<TSprite> verwenden und immer am gleichen Index den String in der Stringliste und dein Sprite in der TList<TSprite> haben.

EWeiss 12. Jun 2017 21:01

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Was enthalten denn die Strings, die in die Stringliste sollen? Willst du darüber die Sprites finden?
Welche strings?
Ich möchte den Record in die Liste packen und daraus die Variablen des Records auslesen können.
So wie ich das verstanden habe geht es wohl nicht.

gruss

SneakyBagels 12. Jun 2017 21:07

AW: Redord zu TStringlist hinzufügen
 
Zitat:

So wie ich das verstanden habe geht es wohl nicht.
Wenn du aus dem Record ein Class machst schon.

EWeiss 12. Jun 2017 21:12

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von SneakyBagels (Beitrag 1374326)
Zitat:

So wie ich das verstanden habe geht es wohl nicht.
Wenn du aus dem Record ein Class machst schon.

möchte ich aber nicht ;)

gruss

himitsu 12. Jun 2017 21:16

AW: Redord zu TStringlist hinzufügen
 
Wenn kein ARC in Sicht ist,

dann Pointere doch einfach bissl rum.

p80286 12. Jun 2017 21:18

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von EWeiss (Beitrag 1374325)
Zitat:

Was enthalten denn die Strings, die in die Stringliste sollen? Willst du darüber die Sprites finden?
Welche strings?
Ich möchte den Record in die Liste packen und daraus die Variablen des Records auslesen können.
So wie ich das verstanden habe geht es wohl nicht.

gruss

Warum nimmst Du dann nicht eine TList oder eine Tobjectlist?

Gruß
K-H

SneakyBagels 12. Jun 2017 21:23

AW: Redord zu TStringlist hinzufügen
 
Dann gehts nicht.

p80286 12. Jun 2017 21:30

AW: Redord zu TStringlist hinzufügen
 
Was geht nicht?

Gruß
K-H

SneakyBagels 12. Jun 2017 21:45

AW: Redord zu TStringlist hinzufügen
 
Record in Stringliste ablegen.

himitsu 12. Jun 2017 21:57

AW: Redord zu TStringlist hinzufügen
 
Nee, aber Zeiger auf Records ginge
oder Records in Dataobjekten.

Oder seit D2009 eine generische TList<Record> bzw. vermutlich eher ein TDictionary<String,Record>

EWeiss 12. Jun 2017 22:11

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von himitsu (Beitrag 1374334)
Nee, aber Zeiger auf Records ginge
oder Records in Dataobjekten.

Oder seit D2009 eine generische TList<Record> bzw. vermutlich eher ein TDictionary<String,Record>

funktioniert nicht wirklich.
geht jetzt.
Delphi-Quellcode:
SpriteList: TList<TSprite>;
Delphi-Quellcode:
  SpriteList := TList<TSprite>.Create();


Allerdings meldet er nun das der linken Seite nichts zugewiesen werden kann.
Delphi-Quellcode:
SpriteList.Items[K].Left := ..

Wieder so ein Sonderfall ;)

gruss

himitsu 12. Jun 2017 22:44

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von EWeiss (Beitrag 1374335)
Wieder so ein Sonderfall ;)

Nee, das ist schon immer so, wenn man einen Record als Property-Typ nutzt.

Es kann immer nur ein kompletter Record geändert werden, was auch klar, da es entweder der Getter oder der Setter benutzt wird und leider niemals Beides (außer man macht es selber) und da Records auch keine Referenzen sind, wie z.B. ein Objekt. :zwinker:

EWeiss 12. Jun 2017 22:49

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von himitsu (Beitrag 1374337)
Zitat:

Zitat von EWeiss (Beitrag 1374335)
Wieder so ein Sonderfall ;)

Nee, das ist schon immer so, wenn man einen Record als Property-Typ nutzt.

Es kann immer nur ein kompletter Record geändert werden, was auch klar, da es entweder der Getter oder der Setter benutzt wird und leider niemals Beides (außer man macht es selber) und da Records auch keine Referenzen sind, wie z.B. ein Objekt. :zwinker:

Aber genau das möchte ich ansonsten macht es keinen sinn.
Ich muss die einzelnen Variablen im Record verändern können.

selbst das funktioniert nicht einmal

Delphi-Quellcode:
Sprite := @SpriteList.Items[Prop.RecycleBin];


Variable erforderlich.
OK Danke denke das kann man dann getrost vergessen.

gruss

himitsu 13. Jun 2017 00:07

AW: Redord zu TStringlist hinzufügen
 
Selbst wenn es funktionieren würde, würde es dich nicht helfen, denn das "Result" ist eine Kopie des Inhalts.

Man kann der TList<> ein neues Items-Property verpassen, welches einen Pointer raus gibt, der auf das Items im internen Record zeigt.
Ist natürlich nicht standardmäßig eingebaut, da es ein Sonderfall und außerdem "unsicher" ist.

Dann doch eher die TList abbauen und veränderbare Felder als eigene Property einbauen
und intern dann jeweils

Delphi-Quellcode:
procedure SetFeldAbc(Index: Integer; Value: TAbc);
var
  Temp: T;
begin
  //InternesArray[Index].Abc := Value;
  Temp := Items[Index];
  Temp.Abc := Value;
  Items[Index] := Temp;
end;
Du willst einen Record, also mußt du auch mit den Nachteilen leben.


Alternativ kann man auch ein TArray<TDeinRecord> verwenden.
Aber die Arraymanipulation (mit Ausnahme des Copy und einer binären Suche für sortierte Arrays) sind im "älteren" Delphi noch spärlich integriert, vorallem Delete und Insert.

EWeiss 13. Jun 2017 00:13

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von himitsu (Beitrag 1374340)
Selbst wenn es funktionieren würde, würde es dich nicht helfen, denn das "Result" ist eine Kopie des Inhalts.

Man kann der TList<> ein neues Items-Property verpassen, welches einen Pointer raus gibt, der auf das Items im internen Record zeigt.
Ist natürlich nicht standardmäßig eingebaut, da es ein Sonderfall und außerdem "unsicher" ist.

Ok Danke!
Ich versuche es mal mit dem Vorschlag von SneakyBagels und erstelle eine Classe für den Kram.

EDIT:
Hat sich erledigt zu viel Aufwand und bringt keinerlei Verbesserung.

gruss

hoika 13. Jun 2017 05:40

AW: Redord zu TStringlist hinzufügen
 
Hallo,
nicht immer gleich den Compiler ins Korn werfen.

Zitat:

Hat sich erledigt zu viel Aufwand und bringt keinerlei Verbesserung.
Delphi-Quellcode:
type
  TSprite = packed record

type
  TSprite = class

type
  TSpriteListe = class(TObjectList)
  TSpriteListe = TList<TSprite>
Nun noch das Erzeugen vorm Add nicht vergessen

EWeiss 13. Jun 2017 05:55

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von hoika (Beitrag 1374345)
Hallo,
nicht immer gleich den Compiler ins Korn werfen.

Zitat:

Hat sich erledigt zu viel Aufwand und bringt keinerlei Verbesserung.
Delphi-Quellcode:
type
  TSprite = packed record

type
  TSprite = class

type
  TSpriteListe = class(TObjectList)
  TSpriteListe = TList<TSprite>
Nun noch das Erzeugen vorm Add nicht vergessen

Ohh.. So geht das ?
Dachte müsste meinen Record als Classe auslegen.

OK werde das nochmal versuchen.
Heute Nacht habe ich erst mal das kopieren der Icons in den Temp Ordner entfernt.
Diese werden jetzt direkt erstellt und anschließend sofort wieder frei gegeben.

Warum ich das so machen will mit der Liste.
Ich möchte kein Array mehr verwenden sondern die Sprites auf diese weise ansprechen ob das so geht da bin ich mir noch nicht so sicher.

Im Moment ist es so.
Delphi-Quellcode:
    Sprite[Prop.RecycleBin].IconPath := ExtractFilePath(ParamStr(0)) + 'UserIcon\48x48\' + sUseThumb;
    IconPath := Sprite[Prop.RecycleBin].IconPath;
    Sprite[Prop.RecycleBin].h_Bitmap := CreateIcon.CreateCustomIcon(IconPath, Width, Height, 0);
    Sprite[Prop.RecycleBin].Width := Width;
    Sprite[Prop.RecycleBin].Height := Height;
    Sprite[Prop.RecycleBin].ShellTo := 'explorer.exe';
    Sprite[Prop.RecycleBin].CmdLine := '/N;::{645FF040-5081-101B-9F08-00AA002F954E}';
    Sprite[Prop.RecycleBin].ShowCmd := SW_SHOW;
Das will ich dann so ändern.
Delphi-Quellcode:
var
  Sprite : PSprite;
begin
    Sprite.IconPath := ExtractFilePath(ParamStr(0)) + 'UserIcon\48x48\' + sUseThumb;
    IconPath := SpriteIconPath;
    Sprite.h_Bitmap := CreateIcon.CreateCustomIcon(IconPath, Width, Height, 0);
    Sprite.Width := Width;
    Sprite.Height := Height;
    Sprite.ShellTo := 'explorer.exe';
    Sprite.CmdLine := '/N;::{645FF040-5081-101B-9F08-00AA002F954E}';
    Sprite.ShowCmd := SW_SHOW;
end;
Vorausgesetzt ich bekomme das mit der Liste hin und es bringt mir einen Vorteil.
Irgendwo muss ich ja dann auch wissen welches Icon gerade in Verwendung bzw. zugewiesen wird.

gruss

jaenicke 13. Jun 2017 06:02

AW: Redord zu TStringlist hinzufügen
 
Genau das ist der Vorteil einer Klasse. Da kannst du einfach TSprite als Typ für die Liste nehmen und es ist trotzdem ein Pointer.
Delphi-Quellcode:
var
  Sprite: TSprite;
begin
  Sprite := TSprite.Create;

  Sprite.IconPath := ExtractFilePath(ParamStr(0)) + 'UserIcon\48x48\' + sUseThumb;
  IconPath := SpriteIconPath;
  Sprite.h_Bitmap := CreateIcon.CreateCustomIcon(IconPath, Width, Height, 0);
  Sprite.Width := Width;
  Sprite.Height := Height;
  Sprite.ShellTo := 'explorer.exe';
  Sprite.CmdLine := '/N;::{645FF040-5081-101B-9F08-00AA002F954E}';
  Sprite.ShowCmd := SW_SHOW;

  Liste.Add(Sprite);
end;

EWeiss 13. Jun 2017 06:07

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von jaenicke (Beitrag 1374347)
Genau das ist der Vorteil einer Klasse. Da kannst du einfach TSprite als Typ für die Liste nehmen und es ist trotzdem ein Pointer.
Delphi-Quellcode:
var
  Sprite: TSprite;
begin
  Sprite := TSprite.Create;

  Sprite.IconPath := ExtractFilePath(ParamStr(0)) + 'UserIcon\48x48\' + sUseThumb;
  IconPath := SpriteIconPath;
  Sprite.h_Bitmap := CreateIcon.CreateCustomIcon(IconPath, Width, Height, 0);
  Sprite.Width := Width;
  Sprite.Height := Height;
  Sprite.ShellTo := 'explorer.exe';
  Sprite.CmdLine := '/N;::{645FF040-5081-101B-9F08-00AA002F954E}';
  Sprite.ShowCmd := SW_SHOW;

  Liste.Add(Sprite);
end;

Hmm hatte eigentlich vor es so zu machen wie hoika es beschrieben hatte.

Delphi-Quellcode:
type
   TSprite = packed record

type
   TSprite = class

type
   TSpriteListe = class(TObjectList)
   TSpriteListe = TList<TSprite>
Den Record möchte ich nicht verändern und extra eine Classe anlegen da habe ich meinen Pointer PSprite.
Delphi-Quellcode:
  TSprite = packed Record
    CtrlName: WideString;
    CtrlIndex: Integer;
    Left: Single;
    Top: Single;
    Width: Integer;
    Height: Integer;
    Scale: Single;
    Opacity: Byte;
    ShellTo: string;
    IconPath: WideString;
    WorkDir: WideString;
    UseLabel: string;
    CmdLine: WideString;
    ShowCmd: longint;
    h_Bitmap: HBitmap;
    Visible: Bool;
  end;
  PSprite = ^TSprite;
Bin mir noch nicht sicher ob mir das Vorteile bringt.
Auch bei einer TList muss ich unter umständen mit einem Array Arbeiten dann wäre es das gleiche wie vorher.
Hmmm :stupid: Iregendwie bin ich mir nicht sicher wie er das meint..
Entweder oder?

class oder TList<TSprite> ?
Habe ich beides schon versucht bringt nicht wirklich was.

gruss

jaenicke 13. Jun 2017 06:21

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von EWeiss (Beitrag 1374349)
Auch bei einer TList muss ich unter umständen mit einem Array Arbeiten dann wäre es das gleiche wie vorher.
[...]
class oder TList<TSprite> ?
Habe ich beides schon versucht bringt nicht wirklich was.

Beides, TSprite als Klasse und TList<TSprite>. Das hatte hoika auch so gemeint.

Du kannst die TList genauso ansprechen wie ein Array, sprich mit Liste[i] und intern wird auch ein Array verwendet. Aber du musst dich eben nicht um die entsprechenden Arrayoperationen kümmern, wenn du Einträge hinzufügst, löschst, usw.

Du kannst natürlich auch TList<PSprite> mit deinem Record benutzen, aber musst dann wie bei einer Klasse den Speicher vorher reservieren und hinterher freigeben. Du hast aber den Nachteil, dass es passieren kann, dass der ganze Record kopiert wird, wenn du irgendwo nicht nur mit dem Pointer arbeiten kannst. Eine Klasse ist immer ein Pointer, da kann nicht mehr als der Pointer automatisch kopiert werden.

Einfacher ist es aber eine TObjectList<TSprite> zu benutzen, TSprite als Klasse zu implementieren (sprich einfach oben packed record durch class ersetzen) und TSprite vor dem Hinzufügen wie ich im Quelltext gezeigt habe zu erzeugen. Wenn du dann den Eintrag aus der Liste löschst, wird dein TSprite auch automatisch freigegeben, darum musst du dich nicht kümmern.

EWeiss 13. Jun 2017 06:22

AW: Redord zu TStringlist hinzufügen
 
Delphi-Quellcode:
Sprite := TSprite.Create;


Bringt mir nichts auch wenn ich jetzt den Record als Classe auslege.
Denn dann müsste ich auch hier ein Array anlegen dann kann ich es direkt so belassen wie es ist.

Ich habe ja nicht nur ein Sprite das können 100 sein.

Dann würde das ganze so aussehen.
Delphi-Quellcode:
Sprite : Array of TList<TSprite>;
oder
Delphi-Quellcode:
Sprite : Array of class(TObjectList);
jetzt ist es so.
Delphi-Quellcode:
Sprite : TArray<TSprite>;


bringt nicht wirklich was.
Oder aber ich bin einfach zu dumm dafür :)

gruss

DeddyH 13. Jun 2017 06:38

AW: Redord zu TStringlist hinzufügen
 
Was willst Du denn immer mit dem Array?
Delphi-Quellcode:
uses System.Generics.Collections;

...

var
  SpriteList: TObjectList<TSprite>;
  Sprite: TSprite;
begin
  Sprite := TSprite.Create;
  Sprite.Width := 42;
  //Weitere Eigenschaften setzen
  Sprites.Add(Sprite);

  //Weitere Sprites erzeugen und der Liste nach obigem Muster hinzufügen
  ...

  //Liste durchlaufen
  for Sprite in Sprites do

  //oder
  for i := 0 to Sprites.Count - 1 do

EWeiss 13. Jun 2017 06:46

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Was willst Du denn immer mit dem Array?
Das ist die frage ;)
Ich will es nicht.

gruss

DeddyH 13. Jun 2017 07:06

AW: Record zu TStringlist hinzufügen
 
Du brauchst es ja auch nicht ;)

TiGü 13. Jun 2017 07:11

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von EWeiss (Beitrag 1374354)
Zitat:

Was willst Du denn immer mit dem Array?
Das ist die frage ;)
Ich will es nicht.

Schlaf mal drüber und dann danach mit frischen Kräften ans Werk.

Vielleicht nochmal kurz die Grundlagen nachlesen: https://downloads.delphi-treff.de/DelphiStarter.pdf ab Seite 132.

Alle wesentlichen und richtigen Lösungen wurden dir hier schon genannt.
Du musst dich nur von alten Denkmustern lösen und einfach übernehmen was DeddyH und jaenicke in den letzten paar Beiträgen gezeigt haben.

EWeiss 13. Jun 2017 07:16

AW: Record zu TStringlist hinzufügen
 
Zitat:

Du musst dich nur von alten Denkmustern lösen und einfach übernehmen was DeddyH und jaenicke in den letzten paar Beiträgen gezeigt haben.
Ja, ja..
Wenn man nicht davor sitzt ist alles einfach.

ganz kleines Beispiel. (Das ist noch eins der einfachsten Dinge)
Dann setz mir das mal um auf der Basis wie hier angegeben.
Ohne Array wohlbemerkt.
Delphi-Quellcode:
  if Assigned(Sprite) then
  begin
    if High(Sprite) > ID_MAIN then
    begin
      for K := ID_FIRST to High(Sprite) do
      begin
        if Sprite[K].h_Bitmap <> 0 then
        begin
          DeleteObject(Sprite[K].h_Bitmap);
          Sprite[K].h_Bitmap := 0;
          ZeroMemory(@Sprite[K], SizeOf(TSprite));
        end;
      end;
    end;
  end;
Wenn man keinen Index mehr hat um die Sprites zu identifizieren ist das nicht mal gerade so dahin geworfen.

gruss

jaenicke 13. Jun 2017 07:32

AW: Record zu TStringlist hinzufügen
 
Delphi-Quellcode:
  if Assigned(Sprite) then
  begin
    if Sprite.Count - 1 > ID_MAIN then
    begin
      for K := ID_FIRST to Sprite.Count - 1 do
      begin
        if Sprite[K].h_Bitmap <> 0 then
        begin
          DeleteObject(Sprite[K].h_Bitmap);
          Sprite[K].h_Bitmap := 0;
          ZeroMemory(@Sprite[K], SizeOf(TSprite));
        end;
      end;
    end;
  end;

EWeiss 13. Jun 2017 07:39

AW: Record zu TStringlist hinzufügen
 
Sprite hat kein Count.
Das habe ich alles schon durch.

Dann noch ein anderes nichts machen nur schauen.

Wie gesagt das ist nicht mal so eben gemacht.
Ich glaube lasse es lieber sein. :)

gruss

jaenicke 13. Jun 2017 07:45

AW: Record zu TStringlist hinzufügen
 
Delphi-Quellcode:
type
  TSprite = class
    CtrlName: WideString;
    CtrlIndex: Integer;
    ...
  end;

var
  Sprite: TObjectList<TSprite>;

EWeiss 13. Jun 2017 07:48

AW: Record zu TStringlist hinzufügen
 
Zitat:

Zitat von jaenicke (Beitrag 1374361)
Delphi-Quellcode:
type
  TSprite = class
    CtrlName: WideString;
    CtrlIndex: Integer;
    ...
  end;

var
  Sprite: TObjectList<TSprite>;

Danke habe es vorhin versucht aber das lässt sich so einfach nicht vereinbaren mit den ganzen Kram.
Siehe Beitrag über den deinen.

gruss

DeddyH 13. Jun 2017 07:56

AW: Record zu TStringlist hinzufügen
 
Wieso nicht? Ich sehe da auf Anhieb nichts in Deinem Code, das unbedingt Records und Arrays brauchen würde.

jaenicke 13. Jun 2017 08:02

AW: Record zu TStringlist hinzufügen
 
Zitat:

Zitat von EWeiss (Beitrag 1374362)
Danke habe es vorhin versucht aber das lässt sich so einfach nicht vereinbaren mit den ganzen Kram.

Ich sehe da nur, dass da ein
Delphi-Quellcode:
High(Sprite)
ersetzt werden muss durch
Delphi-Quellcode:
Sprite.Count - 1
wie im Beispiel und es muss noch das einzelne Sprite (Für die Liste wäre nebenbei Sprites im Plural sinnvoller, dann müsste ich das nicht betonen) erzeugt werden:
Delphi-Quellcode:
// statt Setlength(Sprite, Count + 1);
                Sprite.Add(TSprite.Create);

                Sprite[Count].Top := Bottom;
...

EWeiss 13. Jun 2017 08:04

AW: Record zu TStringlist hinzufügen
 
Zitat:

Zitat von DeddyH (Beitrag 1374363)
Wieso nicht? Ich sehe da auf Anhieb nichts in Deinem Code, das unbedingt Records und Arrays brauchen würde.

Du siehst aber schon wie viele Indexe ich benötige um die Sprites zu zuweisen?
Found, Count, FlagFound, Prop.RecycleBin ?

Delphi-Quellcode:
Sprite[Count].Top := Bottom;

Das ist ein Array oder?
Und das wollte ich nicht! (Dann kann ich es auch so belassen wie es ist)
Somit hat sich das erledigt.

Danke für eure Teilnahme!

gruss

DeddyH 13. Jun 2017 08:17

AW: Record zu TStringlist hinzufügen
 
Nochmal ganz langsam: wie spricht man ein Array-Element an?
Delphi-Quellcode:
Array[Index]
Und ein Listenelement?
Delphi-Quellcode:
List[Index]
Mal abgesehen von Low() und High() müsste am Zugriff auf die Elemente doch nichts ändern. Sry, ich verstehe Deine Einwände nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr.
Seite 1 von 3  1 23      

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