Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi EXE in Memo (https://www.delphipraxis.net/37096-exe-memo.html)

Äfan 30. Dez 2004 22:51


EXE in Memo
 
Guten Abend,

Ich will eine EXE Datei öffnen und den Inhalt der EXE in Memo1 einfügen. Wenn ich dies aber mit OpenDialog machen, wie ichs auch mit nem Text mache, steht in der Memo1 nur "ME|". Was mache ich falsch und wie gehörts richitg ?

MfG

Matze 30. Dez 2004 22:52

Re: EXE in Memo
 
Äh, da kann doch nichts gescheites dabei rauskommen. :roll:

PierreB 30. Dez 2004 22:53

Re: EXE in Memo
 
Zitat:

Ich will eine EXE Datei öffnen und den Inhalt der EXE in Memo1 einfügen. Wenn ich dies aber mit OpenDialog machen, wie ichs auch mit nem Text mache, steht in der Memo1 nur "ME|". Was mache ich falsch und wie gehörts richitg ?
1. Wozu das ganze? Für was soll das gut sein ?
2. Außer Zahlen und Buchstabensalat siehst du da eh nix !

??

Äfan 30. Dez 2004 22:55

Re: EXE in Memo
 
Zitat:

1. Wozu das ganze? Für was soll das gut sein ?
Ich will einen Texteditor machen, der auch EXE Dateien öffnen kann.

Zitat:

2. Außer Zahlen und Buchstabensalat siehst du da eh nix !
Ich weiß, brauche es aber.

Gibt es ne möglichkeit ?

Matze 30. Dez 2004 22:56

Re: EXE in Memo
 
Ich hatte ein ähnliches Problem: Notepad hat den Inhalt von WOrd-Dateien einigermaßen korrekt dargestellt, das Memo nur einen kurzen String.

Heraus kam dabei nicht allzu viel. Klick :(

Christian Seehase 30. Dez 2004 23:11

Re: EXE in Memo
 
Moin Zusammen,

sobald eine binäre Null in der Datei auftaucht ist Schluss.
Notepad macht aus den diesen übrigens Blanks.

Muetze1 30. Dez 2004 23:13

Re: EXE in Memo
 
Moin!

Zitat:

Zitat von Christian Seehase
sobald eine binäre Null in der Datei auftaucht ist Schluss.

Nenn mich altklug, aber eine hexadezimale oder sogar eine oktale Null würden das selbe bewirken, oder? Mal ganz abgesehen von der dezimalen... :-D

MfG
Muetze1

Luckie 31. Dez 2004 00:04

Re: EXE in Memo
 
Guck dir hier mal meinen HexLoader an.

Äfan 31. Dez 2004 00:59

Re: EXE in Memo
 
Man könnte doch die exe in eine Text Datei umwandeln und dann in die Memo laden. Wie geht das mit dem Umwandeln ?

MFG

flomei 31. Dez 2004 01:28

Re: EXE in Memo
 
Äh, du kannst aus ner MP3 auch ne TXT Datei machen aber dein Ergebnis wird nicht besser... ;)

Guck dir mal Luckie´s HexLoader an, da kannste sicherlich was finden...

MFG Florian :hi:

mschaefer 31. Dez 2004 08:20

Re: EXE in Memo
 
Moin, moin,

Der entscheidente und zielgerichtete Hinweis kam von Luckie!

Ein Memo ist prinzipbedingt durch die Zeilentrennung via #10#13 und die Dateiendmarkeirung #0 sowie etliche nicht darstellbare Zeichen simpel trivial völlig ungeeignet. Jeglicher Versuch wird mit vergeudeter Arbeitszeit bestraft...

Gruß // Martin

bigg 31. Dez 2004 08:29

Re: EXE in Memo
 
Ein normaler Zeilenumbruch in Windows sieht so aus: #13#10.

mschaefer 31. Dez 2004 08:35

Re: EXE in Memo
 
Korrekt: #13#10 ! MfG /Martin

Phoenix 31. Dez 2004 08:41

Re: EXE in Memo
 
Zitat:

Zitat von bigg
Ein normaler Zeilenumbruch in Windows sieht so aus: #13#10.

:roll:

1.) Kann so ein Zahlendreher immer mal wieder vorkommen und
2.) Hilft das bei der Fragestellung auch nicht gerade weiter. Sorry.

Das Problem liegt tatsächlich im Memo: Es ist einfach nicht dazu geeignet, solche Daten darzustellen.

Zitat:

Zitat von Christian Seehase
sobald eine binäre Null in der Datei auftaucht ist Schluss.

Zitat:

Zitat von Muetze1
Nenn mich altklug, aber eine hexadezimale oder sogar eine oktale Null würden das selbe bewirken, oder? Mal ganz abgesehen von der dezimalen...

Nee, nicht Altklug, das ganze war einfach nur Schwachfug von Euch beiden. ;-)

Ne binäre Null taucht allein bei der Darstellung des ASCII-Zeichens '0' (Dez: 48, Hex: 30, Oct: 060) in der Binärdarstellung ('110000') schon gleich 4 mal auf, ohne das das Memo hier auch nur daran denkt auszusetzen. Demnach ist aus Mützes Beitrag falsch, denn eine Hexadezimale, Oktale oder Dezimale null bewirken eben nicht das gleiche wie eine (einzelne) binäre.

Damit das Memo denkt, die Datei sei zu ende muss schon ein komplettes null-Byte da sein, also 8 binäre nullen unmittelbar hintereinander - oder eben eine Null in den von Muetze genannten Darstellungsformen ;-)

Ja, und jetzt dürft ihr mich allesamt Klugscheisser nennen, und es macht mir nix aus :lol:

Christian Seehase 31. Dez 2004 13:13

Re: EXE in Memo
 
Moin Phoenix,

Zitat:

Zitat von Phoenix
Zitat:

Zitat von bigg
Ein normaler Zeilenumbruch in Windows sieht so aus: #13#10.

:roll:

1.) Kann so ein Zahlendreher immer mal wieder vorkommen und

Das stimmt zwar, kann aber fatale Folgen haben.
Beispielsweise kommt der Textimportassistent von Access 2003 ins Trudeln, wenn der Zeilenumbruch nicht #13#10 lautet.
Für Access 97 und 2000 (oder war es XP :gruebel: ) sagt MS dazu in einem Knowledgebaseartikel:
"This behaviour is by design."

...

:gruebel:

Zumindest Access 97 hat allerdings mit einem reinen #10 keine Probleme :mrgreen:

Zitat:

Zitat von Phoenix
Ne binäre Null taucht allein bei der Darstellung des ASCII-Zeichens '0' (Dez: 48, Hex: 30, Oct: 060) in der Binärdarstellung ('110000') schon gleich 4 mal auf, ohne das das Memo hier auch nur daran denkt auszusetzen.

"binäre Null" ist ein feststehender Begriff für ein Byte, dass sich aus acht Nullbits zusammensetzt, da ein Byte die kleinste Einheit ist, die direkt gelesen/geschrieben werden kann. ;-)

Äfan 31. Dez 2004 13:15

Re: EXE in Memo
 
Zitat:

Hilft das bei der Fragestellung auch nicht gerade weiter. Sorry.
Das Stimmt allerdings.

@Phoenix: Klugscheißer ! Nein Spaß ! :-D Die Erklärung war nicht ganz ohne :gruebel: :) thx

Zitat:

Der entscheidente und zielgerichtete Hinweis kam von Luckie
Ja klar, nennt mich begriffsstutzig oder dumm, aber das muss doch auch einfacher gehen und ich will keinen HexEdit machen. Ich will die Datei genauso darstellen, als wenn man ne EXE im Editor öffnet.

Jetzt kommt mir da noch die frage: Könnte man das nicht mit ner ActiveX komponente darstellen ? Also einfach die vom Editor verwenden ? :gruebel: oder ?

MFG

Luckie 31. Dez 2004 13:17

Re: EXE in Memo
 
Äh, so langsam schwant mir wo von du redest. Willst du die compilierte Exe Datei wieder so in einem Memo öffnen, wie du sie in der Delphi IDE gesehen hast, also den Quellcode?

Christian Seehase 31. Dez 2004 13:20

Re: EXE in Memo
 
Moin Äfan,

Zitat:

Zitat von Äfan
Ich will die Datei genauso darstellen, als wenn man ne EXE im Editor öffnet.

Dann lies die Datei in einen TFileStream ein, geht Zeichenweise durch, und wandele dort jedes Nullbyte in ein Blank um.
Anschliessen kannst Du dann das Memo aus dem Buffer füllen.

Äfan 31. Dez 2004 13:27

Re: EXE in Memo
 
Zitat:

Äh, so langsam schwant mir wo von du redest. Willst du die compilierte Exe Datei wieder so in einem Memo öffnen, wie du sie in der Delphi IDE gesehen hast, also den Quellcode?
:-D Ja ! Naja, zu teil ! Also den Quellcode aus einer Delphi EXE zu bekommen ist meines Wissens nicht möglich und dies habe ich auch nicht vor.

Zitat:

Dann lies die Datei in einen TFileStream ein, geht Zeichenweise durch, und wandele dort jedes Nullbyte in ein Blank um.
Anschliessen kannst Du dann das Memo aus dem Buffer füllen.
Ähhh ja..... Beispiel ? :-D :wiejetzt:

MFG

Luckie 31. Dez 2004 13:28

Re: EXE in Memo
 
Mal einen Gegenfrage: Was willst du mit der Exe in deinem memo anfangen?

Äfan 31. Dez 2004 13:30

Re: EXE in Memo
 
Anschauen und mich freuen was die Technik heutzutage alles kann ! :-D

Christian Seehase 31. Dez 2004 13:37

Re: EXE in Memo
 
Moin Äfan,

weisst Du jetzt nicht, wie Du eine Datei in einen TFileStream einliest, wie Du die Werte umwandeln sollst, oder wie Du ein Memo aus dem Buffer füllst?

Äfan 31. Dez 2004 13:52

Re: EXE in Memo
 
Nein weiß ich nicht :cry:

Christian Seehase 31. Dez 2004 14:12

Re: EXE in Memo
 
Moin Äfan,

dann ein paar Anhaltspunkte:

Datei in TFileStream einlesen:

Delphi-Quellcode:
var
  fs  : TFileStream;
  sBuf : string;

begin
  fs := TFileStream.Create(...,fmOpenRead);
  try
    sBuf := StringOfChar(#00,fs.Size);
    fs.Read(sBuf[1],fs.Size);
  finally
    FreeAndNil(fs);
  end;
end;
Umwandeln von Zeichen

Delphi-Quellcode:
for i := 1 to length(sBuf) do
begin
  if sBuf[i] = #00 then sBuf[i] := #32;
end;
Füllen eines Memos aus dem Buffer

Delphi-Quellcode:
  Memo1.Lines.Text := sBuf;

Ultimator 31. Dez 2004 14:16

Re: EXE in Memo
 
@Äfan: Das war eine "oder"-Frage ;-)

Für den FileStream schau dir mal die OH an, da ist eigentlich alles wichtige drin


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 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