AGB  ·  Datenschutz  ·  Impressum  







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

Array aus Record löschen

Ein Thema von EWeiss · begonnen am 22. Mai 2017 · letzter Beitrag vom 22. Mai 2017
Antwort Antwort
Seite 1 von 3  1 23      
EWeiss
(Gast)

n/a Beiträge
 
#1

Array aus Record löschen

  Alt 22. Mai 2017, 17:38
Löschen des Array

Delphi-Quellcode:
    if gS[K].h_Bitmap = 0 then
    begin
      for Index := (K + 1) to (Length(gs) - 1) do
        gs[Index - 1] := gs[Index];

      Setlength(gs, length(gs) - 1);

      dec(Count);
      if gp.RecycleBin = K then
        gp.RecycleBin := 0;
    end;
packe ich das ganze jetzt in eine procedure macht das Teil Ärger
Manchmal hat man echt ein Brett vorm Kopf.

Delphi-Quellcode:
procedure Delete(var SrcArray: Array of TSprite; Index: Integer);
var
  I: Integer
begin

  for I := (Index + 1) to (Length(SrcArray) - 1) do
    SrcArray[I- 1] := SrcArray[I];

  Setlength(SrcArray, length(SrcArray) - 1); //<< inkompatible Typen
end;
Aufruf

Delete(gs, K);

verwende ich jetzt hier direkt gs dann funktioniert das ganze. Warum?

Setlength(gs, length(SrcArray) - 1); //<< inkompatible Typen
es ist unabhängig vom var Parameter.
Auch dann geht es nicht.

gruss

Geändert von EWeiss (22. Mai 2017 um 17:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#2

AW: Array aus Record löschen

  Alt 22. Mai 2017, 17:52
Delphi-Quellcode:
procedure Delete(var SrcArray: Array of TSprite; Index: Integer);
var
  I: Integer
begin
  ...
  Setlength(SrcArray, length(SrcArray) - 1); //<< inkompatible Typen
end;
Das hatten wir heute schon mal: Siehe hier

Lösung: TArray<TSprite>
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Array aus Record löschen

  Alt 22. Mai 2017, 17:57
Delphi-Quellcode:
procedure Delete(var SrcArray: Array of TSprite; Index: Integer);
var
  I: Integer
begin
  ...
  Setlength(SrcArray, length(SrcArray) - 1); //<< inkompatible Typen
end;
Das hatten wir heute schon mal: Siehe hier

Lösung: TArray<TSprite>
Würde eventuell gehen. Danke.
Das Problem ist nur das ich einen Var Parameter übergebe.. eventuell entfernen?
Müsste eigentlich auch ohne gehen.

Ich kann es im Moment nicht testen da das nur eine Vorsichtsmaßnahme ist falls das HBitmap einmal 0 sein sollte.

EDIT:
Ich weiß jetzt nicht welche Auswirkungen es hat wenn ich
gs: Array of TSprite; zu
  gs: TArray<TSprite>; ändere.

gruss

Geändert von EWeiss (22. Mai 2017 um 18:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#4

AW: Array aus Record löschen

  Alt 22. Mai 2017, 18:06
Das Warum wurde da auch erklärt ... Stichwort "Open Array" vs. "dynamisches Array".
http://www.delphipraxis.net/192817-s...parameter.html
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#5

AW: Array aus Record löschen

  Alt 22. Mai 2017, 18:06
Var ist schon in Ordnung.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Array aus Record löschen

  Alt 22. Mai 2017, 18:07
Hat das irgendwelche Auswirkungen ? Bitte siehe mein EDIT.
Wird das Teil langsamer oder zu irgendwelchen Einstellungen inkompatibel?

Zitat:
Var ist schon in Ordnung.
Ja danke Olli
Es geht mir um mein EDIT: im vorherigen Beitrag..

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#7

AW: Array aus Record löschen

  Alt 22. Mai 2017, 18:08
Ich hab auch ein EDIT im Post.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Array aus Record löschen

  Alt 22. Mai 2017, 18:10
Ich hab auch ein EDIT im Post.
Ja habe schon verstanden es ist dann ein "Open Array"
Nur welchen vor oder Nachteil bringt das für mich.
Habe keinen Bock den Code deshalb jetzt komplett umschreiben zu müssen.

Dann mache ich es lieber ohne Procedure.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#9

AW: Array aus Record löschen

  Alt 22. Mai 2017, 18:12
Es ist schneller? (das Open Array kopiert praktisch die Daten/Zeiger, die von außen rein kommen, in seine eigene Struktur rein)

Und vorallem "es funktioniert".
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Array aus Record löschen

  Alt 22. Mai 2017, 18:14
Es ist schneller? (das Open Array kopiert praktisch die Daten/Zeiger, die von außen rein kommen, in seine eigene Struktur rein)

Und vorallem "es funktioniert".
OK Danke.. Das reicht mir wenn ich sonst nichts tun muss
Danke für eure Hilfe.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 22:25 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