![]() |
AW: Verschiedene Arrays! Besser mit Generics?
Dann musst Du eben nicht mit Records arbeiten, sondern mit einer entsprechenden Klasse, die den Puffer anhand einer Objektliste zerpflückt bzw. wieder zusammensetzt.
|
AW: Verschiedene Arrays! Besser mit Generics?
Nun komm doch nicht mit so nem neumodischen Kram. Klasse, *pfh* :mrgreen:
|
AW: Verschiedene Arrays! Besser mit Generics?
das Problem ist doch nicht wie es gespeichert wird...
Sondern wie es definiert ist... Und zwar als Konstanten |
AW: Verschiedene Arrays! Besser mit Generics?
Dann musst Du eben die Definition ändern. Bisher
Delphi-Quellcode:
Ersetzen durch (ähnlich wie ein Dataset)
TMyRecordDef = record
Feldname : String; Feldtype : TFeldtypen; end;
Delphi-Quellcode:
TMyRecordDef = class(TRecordDef)
... MyRecordDef := TMyRecordDef.Create; MyRecordDef.ID := ''; MyRecordDef.AddDefinition('FeldName', ftString, 20); MyRecordDef.AddDefinition('Feldtype', TFeldTypen); |
AW: Verschiedene Arrays! Besser mit Generics?
Zitat:
Delphi-Quellcode:
Procedure InitializeRecordDef(Var recordDef: TRecordDef);
Begin recordDef := TRecordDef.Create( (Feldname: 'Magic'; Feldtype: sqKeyText), (Feldname: 'Wert'; Feldtype: sqText)); End; |
AW: Verschiedene Arrays! Besser mit Generics?
Ich habe es mehrmals versucht und ich habe mir Mühe gegeben, aber ich verstehe immer noch nicht, um was es überhaupt geht :oops:
Man erstellt lokal einen Record (mit vielen Feldern) und möchte ihn nun in einen definierten "Default"-Zustand bringen, oder? Man kann einem Record doch einen (nicht parameterlosen) Konstruktor verpassen und lässt es dort machen? Und - was ich schon immer fragen wollte - was hat es eigentlich mit dem "Default"-Befehl auf sich? Kann man da etwas anpassen oder festlegen, was Default sein soll?
Delphi-Quellcode:
type
TMyRecord = record someIntField: Integer; someStrField: String; end; var myRecord: TMyRecord; begin myRecord := Default(TMyRecord); [...] end; |
AW: Verschiedene Arrays! Besser mit Generics?
Sieh das Default einfach wie ein
![]() Wenn man bei einfachen Typen anfängt, wird es vielleicht klarer.
Delphi-Quellcode:
Und das kann man nun verschachteln (
Default(Integer) = 0 // Low(Integer)=MinInt und High(Integer)=MaxInt
Default(String) = '' // Low(String)=erster Array-Index und High(String)=letzer Array-Index Default(TButton) = nil
Delphi-Quellcode:
),
Default(TMyRecord)
wobei quasi für jedes Feld des angegebenen Records das Default des entsprechenden Typen eingesetzt wird. (im Prinzip entspricht es dem InitializeRecord/InitializeArray aus der SysUils) |
AW: Verschiedene Arrays! Besser mit Generics?
Ja, mir war nur gruselig, dass ich in der Hilfe zu dumm war, überhaupt etwas zum Ausdruck "Default" zu finden und auch keinen RTL-Code. Dass der alle Record-Felder so initialisiert, wie sie es bsp. in einer Klasse wären war mir schon klar. Nur vielleicht ließe sich das auch manuell noch für einen eigenen Record-Typen anpassen? Man weiß ja nie 8-)
|
AW: Verschiedene Arrays! Besser mit Generics?
Zitat:
Dann habe ich aus der Konstantendefinition mit 0 Taktzyklen eine aktive Zuweisung mit 10000n Taktzyklen gemacht. So mache ich für die Zuweisung einen Move - und bin fertig. Ich habe von diesen Definitionen ca. 25 in allen größen von Array[0..2] bis Array[0..350]. Da ich im OnCreate meines Datenbank Objects diese Definition setzen muss, müsste ich jedes mal durch so eine Liste laufen. Sorry, aber Mobile_Apps sind schon langsam genug... Mein Weg funktioniert ja. Dachte nur man könnte es ggf. etwas schöner machen... Ich dachte eher sowas wie DoSetArray<T>(MyRecord:T) irgendetwas... Um die Typenzuweisung hin zu bekommen. Aber ein Generic Type läßt sich scheinbar auch nicht als Konstante definieren, oder doch? |
AW: Verschiedene Arrays! Besser mit Generics?
Wie hast Du denn die Taktzyklen auf dem Mobilgerät gemessen? Daran wäre ich auch mal sehr interessiert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr. |
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 by Thomas Breitkreuz