AGB  ·  Datenschutz  ·  Impressum  







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

Generics nicht in SubRecords verfügbar.

Ein Thema von himitsu · begonnen am 12. Sep 2010 · letzter Beitrag vom 14. Sep 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu

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

Generics nicht in SubRecords verfügbar.

  Alt 12. Sep 2010, 10:20
Delphi-Quellcode:
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;
Bei Diesem meckert der Compiler folgender Maßen rum, in der Zeile S: Str; :
Zitat:
[DCC Fehler] RegEx.pas(232): E2029 '(' erwartet, aber ';' gefunden
So wie es aussieht will er hier die Prozedur Delphi-Referenz durchsuchenStr erkannt haben.
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:
[DCC Fehler] RegEx.pas(232): E2003 Undeklarierter Bezeichner: 'GenStr'
Ahhh, jetzt isses klar, der generische Typ wird einfach nicht weitergereicht.
Wieso nicht?

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?
$2B or not $2B

Geändert von himitsu (12. Sep 2010 um 22:34 Uhr)
  Mit Zitat antworten Zitat
USchuster

Registriert seit: 12. Sep 2010
Ort: L.E.
120 Beiträge
 
Delphi XE3 Professional
 
#2

AW: Genericks nicht in SubRecords verfügbar.

  Alt 12. Sep 2010, 14:39
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:
So wie es aussieht will er hier die Prozedur Str erkannt haben.
Wie um himmels Willen kommt der Compiler darauf?
Str ist eine eingebaute Prozedur und ein anderes Verhalten im Vergleich zu normalen (im Quelltext definierten) Prozeduren wundert mich daher nicht. Die Verwendung einer normale Prozedur führt korrekterweise zum Fehler E2007.

Ändere am besten den Code nach
Delphi-Quellcode:
  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;
Ich denke das war's was Du mit
Zitat:
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?
meinst? Oder etwa nicht?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Genericks nicht in SubRecords verfügbar.

  Alt 12. Sep 2010, 15:21
OK, immerhin ein bissl besser, als mein doppelter Generic.
Delphi-Quellcode:
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;
Wenn ich jetzt noch das generische Stringproblem hinbekomm, dann isses fast ideal.
$2B or not $2B
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

AW: Genericks nicht in SubRecords verfügbar.

  Alt 12. Sep 2010, 22:26
Wenn der QC Eintrag dann gelöst ist, kannst du DelphiX2 kaufen, damit es funktioniert
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Genericks nicht in SubRecords verfügbar.

  Alt 12. Sep 2010, 22:32
[OT]Da ist ein K zu viel in der Überschrift.[/OT]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Generics nicht in SubRecords verfügbar.

  Alt 12. Sep 2010, 22:35
Wo?

Nja, fehlerhafte Dinge darf man auch mit Fehlern schreiben.
$2B or not $2B
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Generics nicht in SubRecords verfügbar.

  Alt 12. Sep 2010, 22:41
Frank verwendet halt eine kreative Rechtschreibung
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Generics nicht in SubRecords verfügbar.

  Alt 13. Sep 2010, 03:53
Ein bissl Individualität kann nie schaden.


Ich versteh die Genericks "manchmal" nicht.

Jetzt sind och noch generische Konstruktoren verboten.
Zitat:
[DCC Fehler] RegEx.pas(654): E2528 Typparameter sind bei dieser Methode nicht erlaubt
Was für einen Sch*** haben die da eigentlich zusammengebastelt.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Generics nicht in SubRecords verfügbar.

  Alt 13. Sep 2010, 16:28
@USchuster:
Nee, ich glaub ich nehm doch eine externe Variante.

Nachdem ich jetzt die Unit umgebaut und wieder kompilierbar hatte, da kam dieses raus:
[DCC Fataler Fehler] RegEx.pas(4250): F2084 Interner Fehler: URW1111 Allerdings meldete sich der Compiler hier erst nach dem End. und ich brauchte eine Weile um es auf diese Zeilen zurückzuführen.


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>;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Generics nicht in SubRecords verfügbar.

  Alt 13. Sep 2010, 19:50
Pointer auf generische Typparameter gehen nicht, warum erklärt Barry Kelly hier (erster Kommentar)

P.S.: Nen Tip: Vergiss Delphi 2010 für solche abenteuerlichen Generic Versuche, das bringt nur Ärger (ich spreche aus Erfahrung)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:05 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