Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Record mit Unicode-"Strings" (array of char) nutzen [D2010] (https://www.delphipraxis.net/148972-record-mit-unicode-strings-array-char-nutzen-%5Bd2010%5D.html)

H4ndy 11. Mär 2010 17:02


Record mit Unicode-"Strings" (array of char) nutze
 
Hallo,

Wir haben hier in der Firma ein Record:
Delphi-Quellcode:
TUString255 = Array [0..255] of WideChar;

TMyRecord =
  Wert: integer;
  bla....
  UnicodeString1: TUString255;
  UnicodeString2: TUString255;
end;
Jetzt wollen wir mit diesen Werten arbeiten.
Delphi-Quellcode:
// Das geht:
MyString := Record.UnicodeString1;
// Das geht aber nicht:
Record.UnicodeString1 := MyString;
Gibt es irgendeine Möglichkeit sauber ohne irgendwelches Copy o.ä. diesem Array Of Char mit einem String zu befüllen?
Falls es eine einfache Möglichkeit gibt, Records mit richtigen Strings als Feldern (UnicodeString1: string) zu Streamen, dann würde das auch schon helfen. Wir sind nicht auf diesen "Unicode-ShortString" festgelegt, suchen im Moment nur eine einfache Möglichkeit dieses Record zu speichern.

DeddyH 11. Mär 2010 17:05

Re: Record mit Unicode-"Strings" (array of char) n
 
Auch wenn das im weitesten Sinne unter Copy fällt: Delphi-Referenz durchsuchenStrPCopy.

Uwe Raabe 11. Mär 2010 17:26

Re: Record mit Unicode-"Strings" (array of char) n
 
Ich weiß nicht, ob das Probleme mit dem Streamen macht, aber du kannst doch einfach die UnicodeStrings als normale string-properties deklarieren und den nötigen Copy-Aufwand in die Getter und Setter packen.

Delphi-Quellcode:
type
  TUString255 = Array [0..255] of WideChar;

  TMyRecord = record
  private
    FWert: integer;
    FUnicodeString1: TUString255;
    FUnicodeString2: TUString255;
    function GetUnicodeString1: string;
    function GetUnicodeString2: string;
    procedure SetUnicodeString1(const Value: string);
    procedure SetUnicodeString2(const Value: string);
  public
    property UnicodeString1: string read GetUnicodeString1 write SetUnicodeString1;
    property UnicodeString2: string read GetUnicodeString2 write SetUnicodeString2;
    property Wert: integer read FWert write FWert;
  end;

function TMyRecord.GetUnicodeString1: string;
begin
  Result := FUnicodeString1;
end;

function TMyRecord.GetUnicodeString2: string;
begin
  Result := FUnicodeString2;
end;

procedure TMyRecord.SetUnicodeString1(const Value: string);
begin
  StrPCopy(@FUnicodeString1[0], Value);
end;

procedure TMyRecord.SetUnicodeString2(const Value: string);
begin
  StrPCopy(@FUnicodeString2[0], Value);
end;

H4ndy 15. Mär 2010 16:00

Re: Record mit Unicode-"Strings" (array of char) n
 
Man kann in Records Getter und Setter definieren? ô.O
Probier ich demnächst mal aus, wir haben es im Moment mit einem Record mit überladenen Operatoren gelöst.

Danke erstmal für die Vorschläge :)

himitsu 15. Mär 2010 16:12

Re: Record mit Unicode-"Strings" (array of char) n
 
Zitat:

Zitat von H4ndy
Man kann in Records Getter und Setter definieren? ô.O

jupp, mindestens seit D2006/TDE

hier hätten wir auch noch soein "aufgemotztes" Char-Array
http://www.delphipraxis.net/internal...t=twidestring*


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 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