Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pchar einen Ordinalwert zuweisen (https://www.delphipraxis.net/30802-pchar-einen-ordinalwert-zuweisen.html)

Moony 29. Sep 2004 14:29


Pchar einen Ordinalwert zuweisen
 
Hallo Leute.

Ich möchte bei mir code einen ausgelesenen Ordinalwert aus einer Datei in einem Pchar speichern. Ist das überhaupt möglich?wenn j, welche Möglihckeiten gibts den da?

Danke und gruß, moony

Luckie 29. Sep 2004 14:35

Re: Pchar einen Ordinalwert zuweisen
 
Wandele ihn erst mit IntToStr in einen String um, dann einen Cast mit PChar.

Moony 29. Sep 2004 14:43

Re: Pchar einen Ordinalwert zuweisen
 
was ist denn ein Cast?

gruß,Moony :gruebel:

Dax 29. Sep 2004 14:47

Re: Pchar einen Ordinalwert zuweisen
 
Ein Cast ist der Vorgang, einen Datentyp in einen anderen umzuwandlen, ohne eine Funktion zu benutzen, also sowas:
Delphi-Quellcode:
var c: Cardinal; b: Byte;
b := Byte(c);

Moony 29. Sep 2004 14:53

Re: Pchar einen Ordinalwert zuweisen
 
ok,das verstehe ich.aber was ich immer noch ganz verstehe, wie ich dann dieses Byte in den Pchar umwandle?

Zitat:

Quellcode: markieren
var c: Cardinal; b: Byte;
b := Byte(c);
wofür ist denn der Cardinal da?

gruß,moony

Dax 29. Sep 2004 14:56

Re: Pchar einen Ordinalwert zuweisen
 
Erstmal: Ein Delphi-Referenz durchsuchenCardinal ist ein Datentyp, der von 0 bis 2^32-1 reicht, also der gröte Integer. Und wie du das Byte in den PChar bekommst, ist einfach:
Delphi-Quellcode:
var p: PChar; b: Byte;
GetMem(p, 1);
p^ := b;
Oder alternativ:
Delphi-Quellcode:
var p: PChar; b: Byte;
GetMem(p, 1);
p := PChar(IntToStr(b));

Chewie 29. Sep 2004 14:58

Re: Pchar einen Ordinalwert zuweisen
 
Also folgendermaßen: Du hast eine Zahl, einen Byte-Wert. Ein PChar ist, wie der Name schon sagt, ein Zeiger auf einen Char. Dieser wird üblicherweise zur Darstellung von Strings verwendet, u.a. zwecks Kompatibilität zu C. Und zwar hat man einen Zeiger auf das erste Zeichen, der String geht solange weiter, bis das erste Byte 0 ist.

Nun wandelst du mittels Delphi-Referenz durchsuchenInttoStr deine Zahl in einen String um und wandelst diesen String in einen PChar um. Da Strings zu PChars kompatibel sind, reicht eine einfache Typumwandlung (=Typecast):

Delphi-Quellcode:
var
  b: Byte;
  s: String;
  p: PChar;
begin
  b := 45;
  s := InttoStr(b);
  p := PChar(s);
end;

Moony 29. Sep 2004 15:37

Re: Pchar einen Ordinalwert zuweisen
 
Danke allen.hab ich auch gemacht und es funktioniert.

gruß, moony :thumb:


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