Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
Delphi XE2 Enterprise
|
AW: Indy CopyTIdBytes
14. Jan 2013, 15:32
Hab's selbst gefunden!
Der empfangende TIdBytes (EffMeld) muss vor dem CopyTidBytes mit SetLength auf die genaue Länge gesetzt werden. Die Routine sieht nun so aus, falls es jemand interessiert:
Code:
doo := '';
if FileExists(GaHiB) then
doo := GaHiB
else
if FileExists(DBPfad + 'GALARM.BMP') then
doo := DBPfad + 'GALARM.BMP';
if doo <> '' then
begin
MemStream.LoadFromFile(doo);
BGel := ReadTIdBytesFromStream(MemStream, MyBuffer, MemStream.Size);
x := round(int(BGel / 60000));
for y := 0 to x do
begin
EffMeld := ToBytes('#B' + IntToStr(y + 1) + '#');
if y < x then
SetLength(EffMeld, 60004)
else
SetLength(EffMeld, BGel - (x * 60000) + 4);
if y < x then
CopyTidBytes(MyBuffer, y * 60000, EffMeld, 4, 60000)
else
CopyTidBytes(MyBuffer, y * 60000, EffMeld, 4, BGel - (x * 60000));
GAlarmServer.Send(EffMeld);
end;
end;
Heinz Schneider
|
|
Zitat
|