function String2Asm(s: string): string; (* Der erzeugte "Code" ist nicht zwangsläufig ausführbar!!! Kann es aber zufällig sein. *) var i: Integer; pc: PChar; begin result := ''; i := Length(s); // Länge des Strings ermitteln if i <> ((i div sizeof(DWORD)) * sizeof(DWORD)) then // Wenn der Length(s) mod 4 <> 0 i := (i div sizeof(DWORD) + 1) * sizeof(DWORD); // Benötigte Länge ermitteln GetMem(pc, i+1); // pc allozieren if Assigned(pc) then // Bei Erfolg try ZeroMemory(pc, i+1); // Hier könnte auch FillChar mit #20 stehen ;) lstrcpyn(pc, @s[1], length(s) + 1); // Stringinhalt in pc kopieren for i := 0 to (i div sizeof(DWORD)) - 1 do // Length(s) div 4 - 1 mal iterieren // Folgende Zeile ist nicht zwingend nötig ;) // if PDWORD(@pc[i * sizeof(DWORD)])^ <> 0 then result := result + Format('$%8.8X, ', [PDWORD(@pc[i * sizeof(DWORD)])^]); // String anfügen finally FreeMem(pc); // pc freigeben end; SetLength(result, length(result) - 2); // die letzten beiden Zeichen ", " löschen result := 'asm'#13#10 + ' DD ' + result + ';'#13#10'end;'; // das Drumherum hinzu end;