Results 1 to 7 of 7

Thread: Probleem met uitvoer Strip.Exe

  1. #1

    Probleem met uitvoer Strip.Exe

    Hallo allemaal,

    In een map op drive D:\...\ staat het programma Strip.Exe en het programma waar onderstaande code een onderdeel van is. Bij de uitvoer van dit programma wordt er gezocht naar een EXE-bestand (programma A) dat op de C:\... drive staat. Het is de bedoeling dat het programma gestript wordt. Maar dat werkt niet.

    Staat het programma A echter in een map op de drive D:\... dan werkt het wel.

    Is hier een oplossing voor?


    Alvast bedankt, Frans

    Code:
        BEGIN
          Fle := ShellTreeView1.Path + LzW10FileView1.Cells[0, LzW10FileView1.Row];
          RunProgram := TProcess.Create(nil);
          RunProgram.Active:=True;
          RunProgram.CommandLine := 'STRIP.EXE --strip-all ' + Fle;
          RunProgram.Execute;
          RunProgram.Free;
        END;

  2. #2
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Je informatie is wel erg karig, Frans.

    Ga eens debuggen en kijk wat het complete pad van Fle is (op de "RunProgram.CommandLine := "-regel).
    Staat daar echt het complete pad (dus inclusief drive), dan kan het komen omdat een pad, welke tekens als : en \ bevat, moet zijn ingepakt in dubbele (") quotes.
    Je moet de code dan aanpassen naar:
    Code:
    RunProgram.CommandLine := 'STRIP.EXE --strip-all "' + Fle + '"';
    Het kan ook zijn dat je Strip.exe programmaatje niet goed overweg kan met het pad in de parameters (wellicht ook weer de : en \ tekens).

    Je kunt eenvoudig zien wat het programma STRIP.EXE ziet door een eenvoudig debugprogrammaatje te maken, ook met naam STRIP.EXE, die het gehele pad die hij op de command-line krijgt wegschrijft naar een tekstbestand.
    TMemoryLeak.Create(Nil);

  3. #3
    CommandLine is deprecated.
    Gebruik Executable en dan Parameters.Add() voor iedere afzonderlijke parameter.
    TProcess zelf zorgt dan voor de juiste quotes voor de complete paramter lijst.

    Bart

  4. #4
    Senior Member Wok's Avatar
    Join Date
    Dec 2002
    Location
    Alkmaar
    Posts
    2,085
    Ik denk een rechten probleem, in de modernere Windows versies mag je niet zomaar alles doen op C:\

    Werk het ook niet als je als Administrator je programma runt?

    Een ander vraagje is jouw 'Strip.exe' een inpakker om je Exe te comprimeren?
    Vooruitlopend op een positief antwoord: Dan heb ik maar 1 advies niet doen, veel malware- en virusscanners reageren hierop, de ruimte winst dan maar heel betrekkelijk
    Die techniek is achterhaald sinds de grote harde schijven betaalbaar geworden zijn.
    10.4.2, Delphi2010, of Lazarus 2.2.0

  5. #5
    strip.exe verwijderd alle debug info uit je programma (line nummers etc.).
    Code:
    C:\Users\Bart>strip --help
    Usage: strip <option(s)> in-file(s)
     Removes symbols and sections from files
     The options are:
      -I --input-target=<bfdname>      Assume input file is in format <bfdname>
      -O --output-target=<bfdname>     Create an output file in format <bfdname>
      -F --target=<bfdname>            Set both input and output format to <bfdname>
      -p --preserve-dates              Copy modified/access timestamps to the output
      -R --remove-section=<name>       Remove section <name> from the output
      -s --strip-all                   Remove all symbol and relocation information
      -g -S -d --strip-debug           Remove all debugging symbols & sections
         --strip-unneeded              Remove all symbols not needed by relocations
         --only-keep-debug             Strip everything but the debug information
      -N --strip-symbol=<name>         Do not copy symbol <name>
      -K --keep-symbol=<name>          Do not strip symbol <name>
         --keep-file-symbols           Do not strip file symbol(s)
      -w --wildcard                    Permit wildcard in symbol comparison
      -x --discard-all                 Remove all non-global symbols
      -X --discard-locals              Remove any compiler-generated symbols
      -v --verbose                     List all object files modified
      -V --version                     Display this program's version number
      -h --help                        Display this output
         --info                        List object formats & architectures supported
      -o <file>                        Place stripped output into <file>
    strip: supported targets: pe-i386 pei-i386 elf32-i386 elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex
    Report bugs to <http://www.sourceware.org/bugzilla/>
    strip wordt standaard aangeleverd via de freepascal installer.

    Bart

  6. #6
    Senior Member Thaddy's Avatar
    Join Date
    Dec 2004
    Location
    Amsterdam
    Posts
    2,211
    Strip is een standaard unix utility: https://en.wikipedia.org/wiki/Strip_%28Unix%29
    En fpc distribueert een windows port voor windows platforms. Op unix systemen is het vrijwel altijd aanwezig.
    Werken aan Ansi support voor Windows is verspilde tijd, behalve voor historici.

  7. #7
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Het idee was origineel EEN build te doen, en deze dan te strippen voor eindgebruikers.

    De developer hield het ongestrippete origineel achter om tracebacks symbolisch te maken, en om coredumps te interpreteren

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •