Zitat von
GPRSNerd:
Ich habe an der Logik der Original-Funktion nix geändert [...]
Was nicht bedeutet, dass der Originalcode fehlerfrei sein muss
Zitat von
GPRSNerd:
Es handelt sich laut Definition der Funktion um die Umwandlung von Unsigned 32bit Integers...
Es sieht so aus, als ob beabsichtigt wird, einen 4-Byte Integer in ein 4-Byte ACII-(Tag-)String zu konvertiren. Allerdings macht der Code nicht das, was beabsichtigt zu sein scheint (weil string[4] aus 5 Bytes besteht: Buffer[0] ist die Länge und Buffer[1..4] sind die Zeichen).
edit:
Delphi-Quellcode:
type
TFourCC = record
case Integer of
1: (AsAnsi: array [0..3] of AnsiChar);
4: (AsLong: LongInt);
end;
function tEndInd.Put32s(AData: LongInt): AnsiString;
var
FourCC: TFourCC;
begin
FourCC.AsLong := AData;
if MotorolaOrder then // SwapLong(AData)
FourCC.AsLong := (Swap(LoWord(AData)) shl 16) or Swap(HiWord(AData))
else
FourCC.AsLong := AData;
Result := FourCC.AsAnsi;
end;