![]() |
Konvert Integer-Textliste nach Binary
Hallo,
Ich will eine Textdatei die eine Liste von Integern enthält die mit einem Delimiter gerennt sind nach Binary konvertieren. Mein Code dafür bislang:
Delphi-Quellcode:
Frage: Jemand eine Idee für einen schnelleren Algorithmus?
IF FileExists(inFile) THEN
BEGIN TempList := TStringList.Create; TRY TempList.LoadFromFile(inFile); TempList.Text := StringReplace (TempList.Text,delimiter,chr(13)+chr(10),[rfReplaceAll, rfIgnoreCase]); OutStream := TMemoryStream.Create; TRY lstcount := 0; while (lstcount <= TempList.Count - 1) do begin intnumber := StrToInt(TempList[lstcount]); OutStream.Write(intnumber,1); INC(lstcount); end; OutStream.SaveToFile(outFile); FINALLY OutStream.Free; END; FINALLY TempList.Free; END; Result := TRUE; END; |
Re: Konvert Integer-Textliste nach Binary
ist
Delphi-Quellcode:
nicht falsch ?
OutStream.Write(intnumber,1);
das müste doch
Delphi-Quellcode:
heisen.
OutStream.Write(intnumber,sizeof(integer));
und
Delphi-Quellcode:
ist doch gleich 4, oder ?
sizeof(integer)
|
Re: Konvert Integer-Textliste nach Binary
Das ist wohl richtig, obwohl der Code so funktioniert.
So ist es wohl richtiger.
Delphi-Quellcode:
Meine Frage ging aber mehr in die Richtung Performance.
FUNCTION IntToBinFile( inFile, outFile, delimiter : STRING) : BOOLEAN;
VAR TempList : TStrings; OutStream : TMemoryStream; lstcount : Integer; intbyte : Byte; ext : STRING; begin ext := ExtractFileExt(inFile); IF ext <> '' THEN BEGIN IF FileExists(inFile) THEN BEGIN { showmessage (inFile+outFile);} TempList := TStringList.Create; TRY TempList.LoadFromFile(inFile); TempList.Text := StringReplace (TempList.Text,delimiter,chr(13)+chr(10),[rfReplaceAll, rfIgnoreCase]); OutStream := TMemoryStream.Create; TRY lstcount := 0; while (lstcount <= TempList.Count - 1) do begin intbyte := StrToInt(TempList[lstcount]); OutStream.Write(intbyte,1); INC(lstcount); end; OutStream.SaveToFile(outFile); FINALLY OutStream.Free; END; FINALLY TempList.Free; END; Result := TRUE; END; end; Ist eine Stringliste die schnellste Möglichkeit? |
Re: Konvert Integer-Textliste nach Binary
Zitat:
|
Re: Konvert Integer-Textliste nach Binary
Folgende Version ist wesentlich schneller als die Stringlisten-Version:
Delphi-Quellcode:
IF FileExists(inFile) THEN
BEGIN AssignFile(mfile, inFile); Reset(mfile); while not Eof(mfile) do begin Readln(mfile, mstr); tmpstring := tmpstring+mstr; end; CloseFile(mfile); OutStream := TMemoryStream.Create; intstr := ''; TRY FOR scount := 1 to Length(tmpstring) do BEGIN if tmpstring[scount] = delimiter THEN BEGIN intbyte := StrToInt(intstr); OutStream.Write(intbyte,1); intstr := ''; END ELSE BEGIN intstr := intstr+tmpstring[scount]; END; END; intbyte := StrToInt(intstr); OutStream.Write(intbyte,1); OutStream.SaveToFile(outFile); FINALLY OutStream.Free; END; Result := TRUE; END; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz