Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Array of Char Frage (https://www.delphipraxis.net/140936-array-char-frage.html)

Bernd29bln 29. Sep 2009 10:33


Array of Char Frage
 
Hallo,

Ich möchte aus einer ini hex werte lesen, das klappt sehr gut. In der ini sind diese Hex werte unterschiedlich lang. bislang hab ich es so gelöst.

Delphi-Quellcode:
var
  ss:= WideString;
...

ss:= chr(idx[0]) + chr(idx[1]) + chr(idx[2]) + chr(idx[3]) + chr(idx[4]); <---
Wie bekomme ich das dynamischer hin mit ch: array of char z.B.

Weis jemand Rat?

Gruß Bernd

[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit]

Medium 29. Sep 2009 10:35

Re: Array of Char Frage
 
Wie ist idx definiert, und wie wird es befüllt?

himitsu 29. Sep 2009 10:38

Re: Array of Char Frage
 
also rein logisch ginge es natürlich so :zwinker:
Delphi-Quellcode:
ss := '';
for i := 0 to High(idx) do
  ss := ss + chr(idx[i]);
pratisch aber einfach alles kopieren.
! aber Achtung, die Elemente in idx müssen hierfür genauso groß sein wie ein Char.
Delphi-Quellcode:
//SetLength(ss, Length(idx));
//MoveMemory(ss[1], Length(idx) * SizeOf(Char));
ups, hab das WideStirng übersehn
Delphi-Quellcode:
SetLength(ss, Length(idx));
MoveMemory(ss[1], Length(idx) * SizeOf(WideChar));
// bzw.
SetLength(ss, Length(idx));
MoveMemory(ss[1], Length(idx) * 2));
Aber idx[i] muß hier natürlich genau 2 Byte aka SizeOf(WideChar) groß sein

mkinzler 29. Sep 2009 10:39

Re: Array of Char Frage
 
Allerdings ist ein WideString kein nativer Delphistring. Deshalb besser mit nativen Typ arbbeiten und dann zuweisen

himitsu 29. Sep 2009 10:42

Re: Array of Char Frage
 
Zitat:

Zitat von mkinzler
Allerdings ist ein WideString kein nativer Delphistring. Deshalb besser mit nativen Typ arbbeiten und dann zuweisen

och, der Vorteil von WideString ist, daß er gegenüber von AnsiString/UnicodeString keine Referenzzählung besitzt, also man diesbezüglich mal nix beachten muß :angel2:

mkinzler 29. Sep 2009 10:43

Re: Array of Char Frage
 
Ich würde mich aber auf die interne Implementierung nicht verlassen

Bernd29bln 29. Sep 2009 10:45

Re: Array of Char Frage
 
Hallo,

Vielen Dank für die Tips.

Ich lese die ini in eine stringlist (sl) ein, dann wird wird sl convertiert in ein integer (idx),
und dieser wiederum dann als chr zum Drucker gesendet das Klappt auch und wird auch ausgeführt.

Nur ebend das es dynamischer werden muss.

Gruß bernd

mkinzler 29. Sep 2009 10:48

Re: Array of Char Frage
 
Verwende doch StringList.Text/DelimitedText

Bernd29bln 29. Sep 2009 10:51

Re: Array of Char Frage
 
In der ini stehen die hex werte so drin: 1d,33, usw. in der stringlist schreibe ich sie mit commatext und hänge jedem noch ein $ vorne dran um sie dann als integer zu convertieren.

gruß bernd

himitsu 29. Sep 2009 11:17

Re: Array of Char Frage
 
Warum nutzt di eigentlich nicht TIniFile + .ReadBinaryStream und ließt es in einen Stream ein ... von dem Stream aus, kannst du es dann dahin schreiben, wie/wo du willst.


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