Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wann kann System.Copy(Array, Index, Count) eine Exception liefern? (https://www.delphipraxis.net/160296-wann-kann-system-copy-array-index-count-eine-exception-liefern.html)

himitsu 6. Mai 2011 10:54

AW: Wann kann System.Copy(Array, Index, Count) eine Exception liefern?
 
Nee, geziehlt fällt mir jetzt nix ein.

Bei Records mit Recordmetoden und den Records sleber als Result davon und zusammen mit nur einem Feld im Record (z.B. nur ein dyn. array oder ein Interface), gibt es einen Fehler in der Referenzzählung (wird zuoft freigegeben und dann knallts).

Enums und Sets, mit vordefinierten Werten (
Delphi-Quellcode:
type e = (one, two=2, tree);
), besitzen keine Typinfos zu den Werten.

Und bei den Generics gibt es Fehler die nicht immer da sind. Irgendwo davor eine Leerzeile eingefügt und urplötzlich geht es u.Ä.

s.h.a.r.k 6. Mai 2011 11:01

AW: Wann kann System.Copy(Array, Index, Count) eine Exception liefern?
 
Zitat:

Zitat von himitsu (Beitrag 1099284)
Bei Records mit Recordmetoden und den Records sleber als Result davon und zusammen mit nur einem Feld im Record (z.B. nur ein dyn. array oder ein Interface), gibt es einen Fehler in der Referenzzählung (wird zuoft freigegeben und dann knallts).

Äh, nochmal langsam?! Ein Record mit Methoden, welcher auch noch ein Feld hat, am besten noch ein dynamisches Array? Also quasi sowas hier :mrgreen:
Delphi-Quellcode:
TApDynamicArray<T> = record
private const
  DEFAULT_SEPARATOR = ';';
  DEFAULT_USE_BRACKETS = True;
  DEFAULT_BRACKETS_OPEN = '[';
  DEFAULT_BRACKETS_CLOSE = ']';
private type
  TDynamicArray = array of T;
private
  FData : TArray<T>;
  { Methoden }
public
  { Methoden }
  property Data[Index: Integer]: T read GetData write SetData; default;
  property Length: Integer read GetLength write SetLength;
end;

himitsu 6. Mai 2011 11:07

AW: Wann kann System.Copy(Array, Index, Count) eine Exception liefern?
 
Jupp.

Das einfachste wäre quasi Dieses.
Delphi-Quellcode:
type
  TKnall = record
    FData: array of irgendwas;
    function Machwas: TKnall;
  end;

http://www.delphipraxis.net/132817-u...ler-e2506.html
https://forums.codegear.com/thread.jspa?threadID=35565
http://www.delphipraxis.net/144528-s...iccharset.html

s.h.a.r.k 6. Mai 2011 11:08

AW: Wann kann System.Copy(Array, Index, Count) eine Exception liefern?
 
Das trifft sich doch echt super! Sowas sollte man früher wissen :mrgreen: Soll ich nun aber darüber lachen oder heulen? :stupid: Naja, wollen wir mal hoffen, dass sonst alles klappt -- bisher geht eigentlich alles, bis auf dieser System.Copy()-Aufruf.

himitsu 6. Mai 2011 11:11

AW: Wann kann System.Copy(Array, Index, Count) eine Exception liefern?
 
hatte oben noch was editiert. :oops:

Nja, den Referenzfehler bekommt man leicht weg ... einfach ein weiteres Feld/Variable in den Record aufnehmen.

s.h.a.r.k 6. Mai 2011 11:19

AW: Wann kann System.Copy(Array, Index, Count) eine Exception liefern?
 
Hm, hat bei mir nich wirklich geholfen. Hätte mich auch gewundert, das es bei mir ja ein Laufzeitproblem ist. Ich warte einfach auf die XE2-Version :stupid: Mein Workaround funktioniert ja, habe nun aber anstatt einer Zeile Code gleich 15... Ärgerlich ist sowas aber trotzdem...

himitsu 6. Mai 2011 11:25

AW: Wann kann System.Copy(Array, Index, Count) eine Exception liefern?
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1099298)
habe nun aber anstatt einer Zeile Code gleich 15...

Schreib einfach alle Befehle hintereinander. :stupid:

s.h.a.r.k 9. Mai 2011 14:55

AW: Wann kann System.Copy(Array, Index, Count) eine Exception liefern?
 
Will hier noch kurz etwas bzgl. dem Move-Befehl in Kombination zu Generics erwähnen, siehe diesen Blog-Eintrag.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr.
Seite 2 von 2     12   

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