2010-07-16 7 views
2

dans Visual Basic je peux ouvrir un fichier binaire (exe) ci-dessous ainsi:Comment puis-je ouvrir des fichiers binaires (exe) dans "Delphi", comme Visual basic?

Strx$ = Space(FileLen(FileName)) 
Open FileName For Binary As #1 
    Get #1, , Strx$ 
Close 

de cette façon que je peux lire tous les caractères de fichiers binaires et lire le contenu de fichiers comme ce format:

alt text http://up.iranblog.com/Files/4b97136a8452414b97b1.png et la question est comment puis-je ouvrir un fichier binaire (exe) dans Delphi avec un format de chaîne (comme image) et non 0,1 (binaire) format?

Merci!

+2

Que voulez-vous exactement faire? Peut-être que nous pouvons suggérer quelque chose de mieux, car l'ouverture d'un fichier binaire en tant que texte ne résoudra vraisemblablement rien. –

+0

Une façon plus courante de faire cela serait d'utiliser un composant de visualisation/éditeur hexadécimal plutôt que de simplement déverser des éléments sur l'écran qui n'est pas lisible. –

Répondre

6

Les fichiers EXE contiennent des caractères NULL (# 0) incorporés. Vous pouvez rencontrer des problèmes lors de l'utilisation de chaînes, car la valeur NULL se trouve généralement à la fin de la chaîne. Certaines routines cesseront de fonctionner avec une chaîne une fois que la valeur NULL est rencontrée. Ayant dit que ce qui suit obtiendrait le contenu d'un fichier dans une chaîne de caractères.

function GetFileIntoString(FileName : String) : String; 
var 
SS : TStringStream; 
begin 
    SS := TStringStream.Create(''); 
    try 
    SS.LoadFromFile(FileName); 
    result := SS.DataString; 
    finally 
    SS.Free; 
    end; 
end; 
+1

fuite de mémoire - vous devriez utiliser try/finally et .free votre stringStream – glob

+0

est-il compatible avec Delphi 2009 et supérieur? (en pensant à Unicode et aux encodages de caractères par défaut ...) – mjn

+0

Leak Fixed. Dans Delphi 2009, la chaîne sera Unicode, et avant ce sera Ansi. Les deux chargeront le fichier dans la chaîne. –