Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Record <> String umwandlung (https://www.delphipraxis.net/15420-record-string-umwandlung.html)

SleepyMaster 28. Jan 2004 14:22


Record <> String umwandlung
 
Hi ihrs!

Wie schaff ich das möglichst einfach (Pointer???)?

Delphi-Quellcode:
type
  TMyRecord = record
    x:boolean;
    y:boolean;
end;

function RecordToStr(input:TMyRecord):string;
begin
//???
end;

function StrToRecord(input:string):TMyRecord;
begin
//???
end;
Vielen Dank

WtF 28. Jan 2004 14:32

Re: Record <> String umwandlung
 
Ich weiß nicht wie es den anderen geht aber ich verstehe deine "Frage" jetzt nicht so ganz - kannst du vieleicht im Einzeln erklären was du überhaupt machen möchtest?
Mfg

SleepyMaster 28. Jan 2004 14:39

Re: Record <> String umwandlung
 
Ich will den Record übers Netwerk versenden und dafür muss er als String vorhanden sein.

Delphi-Quellcode:
type
  TMyRecord = record
    x:boolean;
    y:boolean;
end;

var
  MyRecord:TMyRecord;
  EinString:string;

function RecordToStr(input:TMyRecord):string;
begin
//???
end;

function StrToRecord(input:string):TMyRecord;
begin
//???
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
EinString:=RecordToStr(MyRecord);
//Der String kann jetzt versendet werden
MyRecord:=StrToRecord(EinString);
end;

d3g 28. Jan 2004 14:44

Re: Record <> String umwandlung
 
Das kannst du nicht machen. Wenn ein Nullbyte im String vorkommt, ist er an dieser Stelle terminiert. Du verlierst den Rest der Daten. Ein Array of Byte wäre sinnvoller.

choose 28. Jan 2004 14:44

Re: Record <> String umwandlung
 
Hallo SleepyMaster,

müssen es unbedingt Records sein oder kannst Du auch einen Erben von TPersistent erstellen, so dass Du mit TReader und TWriter die Serialisierung der Delphi-Komponenten verwenden kannst?
Eine Lösung mit Records wirst Du nicht auf automatischen Weg (ohne PreCompiler) hinbekommen, weil zu ihnen keine Reflektionsinformationen (RTTI) abgelegt werden.

SleepyMaster 28. Jan 2004 14:46

Re: Record <> String umwandlung
 
@choose

Wenn du mal ein kurzes Beispiel gibst wäre es auch mit TPersistent ok!

Vielen Dank schon mal!

WtF 28. Jan 2004 14:54

Re: Record <> String umwandlung
 
Ich vogel wollte dir gerade dir Functionen mit IF sätzen schreiben :drunken:
Benutz einfach strtobool und booltostr, damit sollte es funzen.
Mfg

SleepyMaster 28. Jan 2004 14:57

Re: Record <> String umwandlung
 
Ich will den kompletten record auf einmal umwandeln. (Sind über 30 Bools drinne)

Currywurst 28. Jan 2004 15:00

Re: Record <> String umwandlung
 
ihr immer mit euren nullen im string, delphi strings vertragen ohne probleme.

sofern du das senden ordentlich anstellst (womit eigentlich, kaum zu glauben das nur strings zu senden gehen!), und dein record nur einfache typen enthält versuch ma einfach so

Code:
function RecordToStr(const input: TMyRecord): String;
begin
  SetLength(Result, SizeOf(TMyRecord));
  Move(input, Result[1], SizeOf(TMyRecord));
end;

function StrToRecord(const input: String): TMyRecord;
begin
  //if Length(input) = SizeOf(TMyRecord) then
  Move(input[1], Result, SizeOf(TMyRecord));
end;

SleepyMaster 28. Jan 2004 15:24

Re: Record <> String umwandlung
 
@Currywurst

Super!!! So gehts ohne Probleme!

Vielen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.
Seite 1 von 2  1 2      

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