Einzelnen Beitrag anzeigen

hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#4

AW: Indy CopyTIdBytes

  Alt 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
  Mit Zitat antworten Zitat