Delphi-PRAXiS

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.

Bernd29bln 29. Sep 2009 11:23

Re: Array of Char Frage
 
hmmm, hab mich mit binarystream noch nicht so befasst. wie könnte man den das realisieren?

gruß bernd

himitsu 29. Sep 2009 11:48

Re: Array of Char Frage
 
Delphi-Quellcode:
var ini: TIniFile;
  stream: TStream;
  S: AnsiString;

stream := TMemoryStream.Create;
try
  ini := TIniFile.Create('name.ini');
  try
    ini.ReadBinaryStream('section', 'ident', stream);
    stream.Position := 0;
    SetLength(S, stream.Size);
    stream.ReadBuffer(S[1], stream.Size);
  finally
    ini.Free;
  end;
finally
  stream.Free;
end;
// in S wären nun die Daten drin
statt einem AnsiString könnte man auch leicht ein Byte-Array oder Dergleichen verwenden

Bernd29bln 29. Sep 2009 12:10

Re: Array of Char Frage
 
Das ist ne sehr interessante sache, werd ich mal umsetzen.


Vielen Dank!

Gruß Bernd

Bernd29bln 29. Sep 2009 12:19

Re: Array of Char Frage
 
Hallo,

Ich habs mal ausprobiert und ich hab festgestellt das nun S als string behandelt wird. Der Drucker druckt S aus.

Gruß Bernd

DeddyH 29. Sep 2009 12:21

Re: Array of Char Frage
 
Zeig doch mal Deinen Code.

Bernd29bln 29. Sep 2009 12:27

Re: Array of Char Frage
 
ich verwende den Code von himitsu.

und füge S dann ein
Delphi-Quellcode:
  WriteLn (d,s);
gruß bernd


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.

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