Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Klassen und Records streamen ? (https://www.delphipraxis.net/215974-klassen-und-records-streamen.html)

paule32.jk 18. Okt 2024 11:49

AW: Klassen und Records streamen ?
 
short string sind doch 255 Zeichen ?
und: String[5] - das ein Array of Char mit 5 Einträgen ?

peterbelow 18. Okt 2024 12:13

AW: Klassen und Records streamen ?
 
Zitat:

Zitat von paule32.jk (Beitrag 1542264)
short string sind doch 255 Zeichen ?
und: String[5] - das ein Array of Char mit 5 Einträgen ?

String[n] definiert einen array von n+1 Ansichar, wobei das Element [0] die Länge des enthaltenen Textes als Byte enthält (kann weniger als n sein!) und der Text bei Index 1 beginnt. Der Typ Shortstring ist nur ein Alias für String[255].

Paule, Du solltest Dir wirklich mal die Mühe machen und den Delphi Language Guide durcharbeiten. Den gibt es auch in der offline-Hilfe, falls Du die installiert hast.

Mavarik 19. Okt 2024 02:52

AW: Klassen und Records streamen ?
 
Zitat:

Zitat von dummzeuch (Beitrag 1542263)
Zitat:

Zitat von Mavarik (Beitrag 1542256)
Hallo!

Wenn Du im Record keine dynamische Felder hast, kannst Du einfach den Record Binär senden.

Bei Strings oder DynArrays musst Du diese Felder einzelln senden.
Du kannst die RTTI dazu verwenden die Felder zu finden.

Short Strings in Records sind kein Problem.

Mavarik

Doch, sind sie: Wenn man RTTI verwenden will, darf man nicht sowas haben:

Delphi-Quellcode:
type
  MyRecord = record
    Name: string[5];
  end;
Dann bekommt man per RTTI für das Feld Name keine Angaben zum Typ.

Was aber geht ist:
Delphi-Quellcode:
type
  NameString = string[5];
type
  MyRecord = record
    Name: NameString;
  end;

Egal ob als Type oder direkt...

Die RTTI braucht man ja nur für nicht short string... Da der Rest ja in einem Rutsch geschrieben werden kann.

Mavarik

bernau 19. Okt 2024 11:09

AW: Klassen und Records streamen ?
 
Zitat:

Zitat von Mavarik (Beitrag 1542256)
Wenn Du im Record keine dynamische Felder hast, kannst Du einfach den Record Binär senden.

Das habe ich mir schon lange abgewöhnt. Es gibt dafür immer ein LoadFromStream oder SaveToStream. Damit ist man wesentlich flexibler. Im Stream am Anfang noch eine Versionsnummer, dann bist du sogar abwärtskompatibel, wenn du den Record erweiterst.


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

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