Exe to binary string

Hey all! I have a small problem.

I need to convert a win32 executable to a binary string, that will be displayed in a memo, in the following format: 00,032,234,123,etc,etc,etc

Could someone help me? If you make a function, where i input the path to the file, and it returns it as one long string, that'd be great. Oh, the max filesize would be around 2/3 MB... But if you can make it work for any file, that'd be great!
Otis_04Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

KalrothCommented:
I just wrote some code that should do it for you.
It's smart in the sense that it doesn't use any buffering, apart from the result string and it should be fairly fast too.

Basically it allocates the string, loads the file in the upper half of the string and then converts the raw data in the upper half to heximal text in the lower half.

Good luck with your project!

(** CODE **)
function FileToHexString(const Filename: String): String;
var
  InputFile : TFileStream;
  InputSize : Integer;
  Middle : PChar;
  Counter : Integer;

  // Taken from KOL, http://xcl.cjb.net/
  function HexDigit( B : Byte ) : Char;
  asm
     CMP  AL,9
     JA   @@1
     ADD  AL,30h-41h+0Ah
  @@1:
     ADD  AL,41h-0Ah
  end;

begin
  if FileExists(Filename) then
  begin
    InputFile := TFileStream.Create(Filename, fmOpenRead);
    try
      InputSize := InputFile.Size;
      // Set length of result, to avoid
      // .. slow dynamic allocation in a loop.
      SetLength(result,InputSize*2);
      // Read the file into the HIGH half
      // .. of the result buffer
      // The buffer will look something like this:
      // |................DATADATADATADATA|
      Middle := @result[InputSize+1];
      InputFile.Read(Middle^,InputSize);
      // Now lets loop through the buffer and
      // .. convert raw data from the middle to
      // .. heximal data in the beginning
      for Counter := 0 to InputSize-1 do
      begin
        result[(Counter*2)+1] := HexDigit((Ord(Middle[Counter]) shr 4) and $F);
        result[(Counter*2)+2] := HexDigit(Ord(Middle[Counter]) and $F);
      end;
    finally
      InputFile.Free;
    end;
  end;
end;
(** /CODE**)
0
Otis_04Author Commented:
WOW... Uhm, when i run that, and put the results of converting calculator into a memo, i get this:

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

etc.... theres alot more than that though... I need it to be binary string... I need it to give me the binary string, so i can insert it into a vbs, because the vbs creates a exe from the binary string. Here is the array i need to put it into:

array= array(77,90,68,1,5,0,2,0,32,0,33,0,255,255,117,0,0,2,0,0,153,0,0,0,62,0,0,0... etc)

I want to put the binary string in that array, replacing the old one... maybe if you seperate the values with a comma too, that'd be great.
0
Otis_04Author Commented:
Well, i found my wqays in another language, thanks alot though :D
0
SiC_OCommented:
Well, Otis_04, you tried in vb, you tried in delphi, just give up. Wait for someone else to code it for you.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.