Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Stream String lesen und schreiben (https://www.delphipraxis.net/213819-stream-string-lesen-und-schreiben.html)

stahli 1. Okt 2023 16:40

AW: Stream String lesen und schreiben
 
Ich baue ja keine Compiler würde mir aber sowas vorstellen wie:

Delphi-Quellcode:
procedure TStream.WriteData(Param);
begin
  if Param is String then
    WriteString(String(Param))
  else
    begin
      was sonst gemacht wird
    end
end;
Eigentlich müsste der Compiler ja wissen, was er gerade verlinkt.
Kann natürlich auch sein, dass die Sichtweise zu naiv ist.

Uwe Raabe 1. Okt 2023 16:44

AW: Stream String lesen und schreiben
 
Sagen wir mal, sie ist halt stark auf deinen Anwendungsfall fixiert.

himitsu 1. Okt 2023 16:54

AW: Stream String lesen und schreiben
 
Der Compiler weiß es, aber in der Funktion gibt es keinerlei Typinfos, wenn man nur den Zeiger rein gibt.
Delphi-Quellcode:
procedure Write(Param: Pointer);
procedure Write(const Param);

procedure Write(Param: Variant);
procedure Write(Param: TVarRec);

procedure Write(Param: array of const);
Beim Letzten werden eigentlich zwei Parameter übergeben,
aber man kann es sich auch einfach als
Delphi-Quellcode:
procedure Write(Param: array of TVarRec);
vorstellen.


Leider wird bei zukünftigen Implementationen immer weniger Compiler-Magic benitzt.
Also nicht sowas wie beim alten Read/ReadLn/Write/WriteLn, wo der Aufruf in eine/mehrere kleine Eintzelaufrufe übersetzt wird, für jeden Typen entsprechend.

Variante Parameter kann Delphi, aber leider nur aufrufen, denn offiziell kann man sie in Pascal nicht deklarieren.
Wie bei der Format-Funktion des C++, ala sprintf.

Was man machen kann, ist ein Overload, wie beim Delphi-Referenz durchsuchenTStream.ReadData.


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

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