Ich brauche eine Delphi5 Funktion, die beliebige Dateien (*.exe, *.zip, *.jpg, ect) in eien String umwandelt.
mfg
DanDanger
Ich brauche eine Delphi5 Funktion, die beliebige Dateien (*.exe, *.zip, *.jpg, ect) in eien String umwandelt.
mfg
DanDanger
Ich brauche eine Delphi5 Funktion, die beliebige Dateien
(*.exe, *.zip, *.jpg, ect) in eien String umwandelt.mfg
DanDanger
Wie meinst du das ?
So wie ich es verstanden habe, könntest du die Dateien z.B. mit TFileStream.ReadBuffer(var Buffer; Count: Longint) in einen String einlesen. Vergiß nicht, die Größe des Strings vorher auf die richtige Größe zu setzen (SetLength).
Jochen
Ich brauche eine Delphi5 Funktion, die beliebige Dateien
(*.exe, *.zip, *.jpg, ect) in eien String umwandelt.
Ich glaub eher, er meint eine File List
Ich meine schon „richtige“ Dateien.
Das Ziel ist: Eine Datei wird in einen String umgewandelt (z.B. eine *.exe Datei), über Winports im Netzwerk verschickt (winports unterstützen leider nur Texte, also strings), und vom Empfänger wieder in eine Funktionierende Datei umgewandelt1!
Soweit die Theorie…
tse, tse
naja hier mal was on-the-fly (ungetestet eingetippt):
var
DataSize: DWord;
DataStr: string;
DataFile: file;
DataBuf: Byte;
HelpVar: DWord;
begin
AssignFile(DataFile, ‚program.exe‘);
Reset(DataFile, 1);
DataSize := SizeOf(DataFile);
SetLength(DataStr, DataSize);
if DataSize > 0 then
begin
for HelpVar := 0 to (DataSize - 1) do
begin
BlockRead(DataFile, DataBuf, 1);
DataStr := DataStr + IntToStr(DataBuf);
end;
CloseFile(DataFile);
end;
end;
Falls das hier compiliert, ist es ziemlich langsam weil nur ein Byte pro Durchlauf gelesen und bearbeitet wird. Am schnellsten wär’s mit nen dynamischen Puffer. Ich weis aber leider ned auswendig wie man auf einzelne Bytes im Speicher eines untypisierten Pointers zugreift. Hab das zu TP-Zeiten mal gemacht.
Vieleicht kriegst du die gegenteilige Routine selbst hin
Korrektur
Da seh ich grad, dass das zu runtime-Errors führen kann. Denn Werte über 9 würde im String 2 Byte belegen und Werte über 99 brauchen 3 Byte. Es ist also möglich, dass der String dann zu kurz ist. (Numerisch brauchen sie alle nur 1 Byte). Versuche die Anweisung "SEtLength(DataStr, DataSize) zu entfernen. Delphi sollte dann selbst den String vergrössern.
DANKE
(o.T.)