AGB  ·  Datenschutz  ·  Impressum  







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

Generic List of records

Ein Thema von bernhard_LA · begonnen am 2. Apr 2017 · letzter Beitrag vom 2. Apr 2017
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.123 Beiträge
 
Delphi 11 Alexandria
 
#1

Generic List of records

  Alt 2. Apr 2017, 08:24
wir verwenden eine generische Liste aus Punkten um eine Funktion darzustellen . Im Sample Code die Definition der Kurve und der TestCode :



Delphi-Quellcode:
  TCurve = class(TList<TPointF>)
  private
  ....

  public

  end;



var
  i: Integer;
  aTPointF: TPointF;
  aCurve: TCurve;

begin
  aCurve := TCurve.Create;
  for i := -10 to 10 do
  begin

    aTPointF.X := i;
    aTPointF.Y := -10 + i * i - i;

    aCurve.Add(aTPointF) // -> AV
  end;

end;
diese Code Sequenz habe ich schon in mehreren Anwendungen erfolgreich verwendet.
jetzt bekomme ich eine Fehlermeldung bei aCurve.Add ().


in der Unit System.types :


Delphi-Quellcode:
  // Calculate the needed size of the heap object
  Inc(PByte(typeInfo), PDynArrayTypeInfo(typeInfo).name);
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Generic List of records

  Alt 2. Apr 2017, 08:35
Kann ich hier mit Tokyo nicht nachvollziehen. Ich vermute den Fehler an ganz anderer Stelle (Typdeklaration mit demselben Namen wie eine Variable oder sowas).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#3

AW: Generic List of records

  Alt 2. Apr 2017, 09:29
Hmm...

Delphi-Quellcode:
begin
  aCurve := TCurve.Create;
  for i := -10 to 10 do
  begin

    aTPointF.X := i;
    aTPointF.Y := -10 + i * i - i;

    aCurve.Add(aTPointF) // -> AV
  end;

end;
(Ich kenne mich mit GenericLists nicht wirklich aus, die gibt es in D6 nicht )

Mal ne ganz blöde Frage:
Wird bei List.Add() immer eine KOPIE des Records in die Liste eingehängt, oder das übergebene Record selber?

Ansonsten hast Du doch immer das selbe Record mit den selben Werten (des letzten Records) in der Liste...
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.123 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Generic List of records

  Alt 2. Apr 2017, 09:38
Danke für den Hinweis. Den Fehler jetzt gefunden : die Create Function der generischen Liste war falsch, inherited create vergessen.

komisch nur , der Code wurde schon x mal verwendet .......
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Generic List of records

  Alt 2. Apr 2017, 11:05
Eventuell machen die jetzt mehr im Constructor.

Mal ne ganz blöde Frage:
Wird bei List.Add() immer eine KOPIE des Records in die Liste eingehängt, oder das übergebene Record selber?
die TList<T> hat intern einen array of T und kopiert darein genau den Typen, den man in der Deklaration bei <T> angegeben hat.
Also hier eine Kopie des Records und es wird natürlich auch auf das Speichermanagement von gemanageten Typen (Strings, dyn. Arrays und Interfaces) geachtet.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Apr 2017 um 11:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:01 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