AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exe Dateien als Text laden

Ein Thema von Neutral General · begonnen am 19. Jun 2006 · letzter Beitrag vom 22. Jun 2006
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Exe Dateien als Text laden

  Alt 19. Jun 2006, 17:30
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:
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;
Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Exe Dateien als Text laden

  Alt 19. Jun 2006, 17:38
Einfach folgende Procedure auf die Daten anwenden:
Delphi-Quellcode:
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;
Man kann natürlich anstelle von TMemo eine HexView-Komponente verwenden...dann wird's profesionell.
Vielleicht mal bei Mael nachfragen/betteln
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Exe Dateien als Text laden

  Alt 19. Jun 2006, 17:43
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...
ehhh.. egal^^

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Exe Dateien als Text laden

  Alt 19. Jun 2006, 17:54
Zitat von Neutral General:
Wobei ich mich grad Frage warum dann die #0 weg müssen...
Weil die Windows Controls, auf denen TMemo aufbaut von Microsoft mit Programmiersprache C/C++ programmiert wurden. In C/C++ sind String üblicherweise 0-terminiert.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Exe Dateien als Text laden

  Alt 19. Jun 2006, 17:55
ne ich meine nicht deswegen...
Wenn ich den String ja eh nicht ausgeben will.
Dann kann ich mir das ganze eigentlich auch sparen oder ?^^
Michael
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Exe Dateien als Text laden

  Alt 19. Jun 2006, 18:56
Zitat von shmia:
Microsoft mit Programmiersprache C/C++ programmiert wurden
Es war reines C im Einsatz.

OT: Schon wieder werden C und C++ zusammengeschrieben, als wäre das das Gleiche und deswegen egal...
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
orion3000

Registriert seit: 28. Aug 2003
Ort: Betzdorf
63 Beiträge
 
Delphi 4 Standard
 
#7

Re: Exe Dateien als Text laden

  Alt 22. Jun 2006, 11:37
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz