AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TIdBytes lesbar in INI speichern und wieder auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

TIdBytes lesbar in INI speichern und wieder auslesen

Ein Thema von fisipjm · begonnen am 16. Nov 2022 · letzter Beitrag vom 17. Nov 2022
Antwort Antwort
fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#1

TIdBytes lesbar in INI speichern und wieder auslesen

  Alt 16. Nov 2022, 17:39
hi,

irgendwie stehe ich mal wieder so richtig auf dem Schlauch.
Ich mache aktuell eine kleine Anwendung, um eine Kamera dazu zu bewegen, ihre vordefinierten Presets anzufahren.

Mein Code dafür schaut grob so aus

Delphi-Quellcode:
class procedure TPresets.preset1;
var
  MessageToSend: Tidbytes;
begin
  setlength(MessageToSend, 7);
  MessageToSend[0] := $81;
  MessageToSend[1] := $01;
  MessageToSend[2] := $04;
  MessageToSend[3] := $3F;
  MessageToSend[4] := $02;
  MessageToSend[5] := $01;
  MessageToSend[6] := $FF;

  with TIniFile.Create(ParamStr(0).Replace('.exe', '.conf')) do
  begin
    TIdUDPClient.Create(nil).SendBuffer(IP, PORT, MessageToSend);
  end;
end;
Ich versuche jetzt die Bytes in eine INI zu speichern. Das geht auch ganz gut damit:

Delphi-Quellcode:
class function TPresets.ByteArrayToString(byteArray: Tidbytes): string;
var
  i: Integer;
begin
  result := '';
  if byteArray <> nil then
  begin
    result := IntToHex(byteArray[0], 2);
    for i := 1 to High(byteArray) do
      result := result + '-' + IntToHex(byteArray[i], 2);
  end;
end;
Dann bekomme ich sowas wie:

Code:
81-01-04-3F-02-01-FF

Wie bekomme ich das jetzt wieder zurück in das TIdBytes gelesen. Ich hab schon alles Mögliche durch, aber steh glaube ich mega auf dem Schlauch.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: TIdBytes lesbar in INI speichern und wieder auslesen

  Alt 16. Nov 2022, 17:45
Split auf die '-' und dann mit StrToInt('$' + 'FF')
oder das Minus weglassen und rückzu alle 2 Chars splitten

oder, wenn man es dann schon "zusammen" hat,
einfach gemeinsam mit Delphi-Referenz durchsuchenBinToHex und Delphi-Referenz durchsuchenHexToBin in/von einen String
oder "modernere" Streaming-Klassen ala TNetEncoding.Base64.EncodeBytesToString
oder ...




Und an gewisse neuere Features kann man sich auch gewöhnen.
MessageToSend := [$81, $01, $04, $3F, $02, $01, $FF];

PS: Ich würde dir mal ein ReportMemoryLeaksOnShutdown := True; anraten, aber dann nicht erschrecken, falls das "grob" nicht zu viel weg ließ.
$2B or not $2B

Geändert von himitsu (16. Nov 2022 um 17:55 Uhr)
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#3

AW: TIdBytes lesbar in INI speichern und wieder auslesen

  Alt 16. Nov 2022, 18:58
Hi Himitsu,

Ich werde deinen Vorschlag Mal versuchen umzusetzen.
Der Code war nur Quick & Realy Dirty reingehauen um zu sehen ob es überhaupt funktionieren würde. In der Endfassung wird das alles hübsch mit try finallys instanziert oder gleich in ein Interface gepackt. Aber danke für den Hinweis
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

AW: TIdBytes lesbar in INI speichern und wieder auslesen

  Alt 17. Nov 2022, 06:23
Moin...
Zitat:
In der Endfassung wird das alles hübsch mit try finallys instanziert oder gleich in ein Interface gepackt
...und hoffentlich ohne das WITH.
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#5

AW: TIdBytes lesbar in INI speichern und wieder auslesen

  Alt 17. Nov 2022, 12:05
Moin...
Zitat:
In der Endfassung wird das alles hübsch mit try finallys instanziert oder gleich in ein Interface gepackt
...und hoffentlich ohne das WITH.
Na klar, wer nutzt schon WITH
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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