![]() |
Exe Dateien als Text laden
Hi,
Wie kann ich Exe Dateien und auch andere Dateien (wav, dat, ka was) in z.B ein Memo laden? Also wenn man die Datei normal reinlädt bekommt man ja nur die ersten paar Zeichen. Hab mir gedacht das es vielleicht an den #0 in der Datei liegen könnte und hab mit Hilfe von nem Freund was gebaut, aber es funktioniert nicht :( Was ist da falsch? Oder ist das der komplett falsche Weg?
Delphi-Quellcode:
Gruß
procedure TForm1.Button1Click(Sender: TObject);
var FileS: TFileStream; StringS: TStringStream; Temp: String; begin if Opendialog1.Execute then begin FileS := TFilestream.Create(Opendialog1.FileName, fmOpenread); StringS := TStringStream.Create(''); StringS.CopyFrom(FileS,FileS.Size); Temp := StringReplace(StringS.DataString,#0,'',[rfReplaceAll]); Memo1.Text := Temp; end; end; Neutral General |
Re: Exe Dateien als Text laden
Einfach folgende Procedure auf die Daten anwenden:
Delphi-Quellcode:
Man kann natürlich anstelle von TMemo eine HexView-Komponente verwenden...dann wird's profesionell.
procedure ReplaceUnprintableChars(var s:string);
var i : Integer; begin for i:=1 to Length(s) do begin case Ord(s[i]) of 0..7, 9,11,12, 14..31: s[i] := '*'; end; end; end; Vielleicht mal bei ![]() |
Re: Exe Dateien als Text laden
ok Danke ich werde es mal ausprobieren.
Also professionell brauch ich es nicht. Weil der Benutzer den String nichtmal zu Gesicht bekommen wird. Wobei ich mich grad Frage warum dann die #0 weg müssen... :gruebel: ehhh.. egal^^ Gruß Neutral General |
Re: Exe Dateien als Text laden
Zitat:
|
Re: Exe Dateien als Text laden
ne ich meine nicht deswegen...
Wenn ich den String ja eh nicht ausgeben will. Dann kann ich mir das ganze eigentlich auch sparen oder ?^^ |
Re: Exe Dateien als Text laden
Zitat:
OT: Schon wieder werden C und C++ zusammengeschrieben, als wäre das das Gleiche und deswegen egal... :roll: |
Re: Exe Dateien als Text laden
Hallo Zusammen!
Du kannst mal fogende Procedure versuchen. Du benötigst ein Richedit1 und eine Statusbar1 mit 3 Panels. Der Aufruf wird gestartet mit Loadfile.
Delphi-Quellcode:
Procedure TfrmMain.LoadFile(Filename:String);
begin Screen.Cursor:=crhourglass; With Richedit1 do begin Lines.BeginUpdate; text := FileToString(Filename); Lines.EndUpdate; Screen.Cursor:=crdefault; statusbar1.Panels[0].Text:='Zeilen gesamt: '+formatfloat('0.00',Lines.Count); statusbar1.Panels[1].Text:=Filename; ReadOnly:=true; end;
Delphi-Quellcode:
function TfrmMain.FileToString(const FileName: String): String;
var F: TStream; k: Integer; begin With Richedit1 do begin Readonly:=false; lines.Clear; font.Name:='Arial'; font.Color:=clBlack; font.Style:=[fsbold]; Font.Size:=10; SelAttributes.Color:=clblack; SelAttributes.Name:='Arial'; SelAttributes.Style:=[fsbold]; SelAttributes.Size:=10; end; application.ProcessMessages; F := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try SetLength(Result, F.Size); F.ReadBuffer(PChar(Result)^, F.Size); finally statusbar1.Panels[2].Text:=winapi1.FileSizeToString(f.Size); F.Free; end; for k :=1 to length(Result) do begin Gauge1.Progress:=winapi1.CalcProzentsatz(length(Result),k); if not (result[k] in [#9, #10, #13, #32..#255]) then result[k] := ' '; end; end; Gruß Orion |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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