![]() |
Generics nicht in SubRecords verfügbar.
Delphi-Quellcode:
Bei Diesem meckert der Compiler folgender Maßen rum, in der Zeile
Type
TRepleacer<Str> = Record Private _Data: Array[-1..255] of Record Pos, Len: Integer; S: Str; End; _Count: Integer; _S: ^Str; Public Procedure Initialize(Var S: Str); Procedure Repleace(Pos, Len: Integer; Const S: Str; Var DoOffset: Integer); Function Finalize: Integer{Offset}; End;
Delphi-Quellcode:
:
S: Str;
Zitat:
![]() Wie um himmels Willen kommt der Compiler darauf? Dieses ist doch in 'ner "Deklaration" zu finden und steht nicht irgendwo im "Code". Nja, also einfach umbenannt und schon kommt Zitat:
Wieso nicht? :evil: Und ja, ich werde jetzt den Record noch in einen weiteren generischen Typen verfrachten und hoffen es geht dann, aber muß denn immer alles so umständlich sein? :cry: |
AW: Genericks nicht in SubRecords verfügbar.
Typparameter funktionieren offenbar nicht in anonymen Subrecords und Du kannst gern dafür einen QC Eintrag anlegen. Im Delphi.NET, welches immer für einen Vergleich gut ist, funktioniert dies auch nicht.
Zitat:
Ändere am besten den Code nach
Delphi-Quellcode:
Ich denke das war's was Du mit
TReplacer<T> = record
private type TData = array [-1..255] of record Pos, Len: Integer; S: T; end; var _Data: TData; _Count: Integer; _S: ^T; end; Zitat:
|
AW: Genericks nicht in SubRecords verfügbar.
OK, immerhin ein bissl besser, als mein doppelter Generic. :stupid:
Delphi-Quellcode:
Wenn ich jetzt noch das generische Stringproblem hinbekomm, dann isses fast ideal.
TReplacer<T> = record
type TData<T2> = array [-1..255] of record Pos, Len: Integer; S: T2; end; var _Data: TData<T>; _Count: Integer; _S: ^T; end; |
AW: Genericks nicht in SubRecords verfügbar.
Wenn der QC Eintrag dann gelöst ist, kannst du DelphiX2 kaufen, damit es funktioniert :)
|
AW: Genericks nicht in SubRecords verfügbar.
[OT]Da ist ein K zu viel in der Überschrift.[/OT]
|
AW: Generics nicht in SubRecords verfügbar.
Wo? :roll:
Nja, fehlerhafte Dinge darf man auch mit Fehlern schreiben. :stupid: |
AW: Generics nicht in SubRecords verfügbar.
Frank verwendet halt eine kreative Rechtschreibung
|
AW: Generics nicht in SubRecords verfügbar.
Ein bissl Individualität kann nie schaden. :angel2:
Ich versteh die Genericks "manchmal" nicht. Jetzt sind och noch generische Konstruktoren verboten. Zitat:
|
AW: Generics nicht in SubRecords verfügbar.
@USchuster:
Nee, ich glaub ich nehm doch eine externe Variante. Nachdem ich jetzt die Unit umgebaut und wieder kompilierbar hatte, da kam dieses raus:
Delphi-Quellcode:
Allerdings meldete sich der Compiler hier erst nach dem End. und ich brauchte eine Weile um es auf diese Zeilen zurückzuführen.
[DCC Fataler Fehler] RegEx.pas(4250): F2084 Interner Fehler: URW1111
nun sieht es also so aus
Delphi-Quellcode:
TReplacerData<Str> = Array[-1..1024] of Record
Pos, Len: Integer; S: Str; End; TReplacer<Str> = Record Private _Data: TReplacerData<Str>; _Count: Integer; _S: ^Str; Public Procedure Initialize(Var S: Str); Procedure Repleace(Pos, Len: Integer; Const S: Str; Var DoOffset: Integer); Function Finalize: Integer{Offset}; End; TReplacer = TReplacer<String>; TReplacerCP = TReplacer<CPString>; |
AW: Generics nicht in SubRecords verfügbar.
Pointer auf generische Typparameter gehen nicht, warum erklärt Barry Kelly
![]() P.S.: Nen Tip: Vergiss Delphi 2010 für solche abenteuerlichen Generic Versuche, das bringt nur Ärger (ich spreche aus Erfahrung) |
AW: Generics nicht in SubRecords verfügbar.
In D2010 soll sich doch einiges gebessert haben?
In D2009 hatte ich noch mehr Probleme und XE hab ich immernoch nicht getestet. |
AW: Generics nicht in SubRecords verfügbar.
In Delphi 2010 waren Generics ansatzweise benutzbar. Trotzdem bin ich bei meiner Implementierung von generischen Events und einem Nachbau von Linq-to-SQL alle Nase lang auf lustige Internal Errors des Compileres gestoßen. Die schlimmsten Kandidaten, die ich aufgrund dieser Fehler irgendwann auf Eis gelegt habe sind zumindest ohne Probleme in XE kompilierbar. *auf Holz klopf*
|
AW: Generics nicht in SubRecords verfügbar.
|
AW: Generics nicht in SubRecords verfügbar.
@himitsu:
Der Compiler unterstützt parametrisierte Methoden, aber keine parametrisierte Konstruktoren oder Destruktoren. C# erlaubt das im übrigen auch nicht und damit ist das mit S-Wort etwas unpassend. Generics werden pro Unit instanziert wo diese verwendet werden und der Code ist dann praktisch nach dem Ende der eigentlichen Unit. Daher ist es bei internen Generics Compilerfehlern nicht verwunderlich das diese auch mal eine Zeile nach dem Unitende gemeldet werden. Den Fehler kann ich nachvollziehen. Leider habe ich den Fehler gestern nicht bekommen, da ich im Projektquelltext getestet habe und der URW Fehler nur auftritt wenn sich die Rekorddefinition in einer Unit befindet. Bei internen Compilerfehlern bleibt i.d.R. nicht anderes übrig als den Code abzuändern. Wer legt nun die QC Einträge dazu an? @Stevie: Es handelt sich um einen Pointer für einen Typparameter und der aufgetretene URW Fehler hat damit gar nichts zu tun. |
AW: Generics nicht in SubRecords verfügbar.
Ich hab schon ein paar QTs, aber seitens Emba noch nie was gehört und in XE wurde es wohl auch nicht behoben, da diese QTs noch offen sind.
Irgendwie verliert man da die Lust. |
AW: Generics nicht in SubRecords verfügbar.
Zitat:
|
AW: Generics nicht in SubRecords verfügbar.
@himitsu:
Ich habe die Probleme eingetragen. Rein interessehalber - was sind Deine Top 3 QC Einträge? Report No: 88028 Status: Reported E2003 Undeclared identifier: 'T' with type parameter in anonymous record within generic type ![]() Report No: 88029 Status: Reported E2528 needs to be documented ![]() Report No: 88031 Status: Reported F2084 Internal Error: URW1136 with nested array of record type with type parameter ![]() |
AW: Generics nicht in SubRecords verfügbar.
Hmmmm, ist 'ne gute Frage ... da kann man sich ja garnicht entscheiden.
So spät am Abend kann ich doch nicht mehr denken ... aber so auf die Schnelle: wäre es der Referenzzählungsfehler von da aus'm Thread ![]() (der vom 33.04.2010 :shock: :lol:) unzählige "Interne Compilerfehler", welche mich öfters mal ärgern (gibt nicht genug platz für alle Links :roll:) und vielleicht noch dieses ![]() |
AW: Generics nicht in SubRecords verfügbar.
[OT]
Zitat:
[/OT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 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-2025 by Thomas Breitkreuz