Le 03/07/2012 18:53, Vincent St-Amour a écrit :
At Tue, 03 Jul 2012 14:55:00 +0200,
Maleval Sebastien wrote:
Hi, I'm trying to use file functions, and I asked myself if it was
possible to execute, and in the same time, write in a ".exe" file.
Someone know what function I must use for this ?
As far as I know, Windows does not let you write in a running
executable.

Taking a step back, what are you tring to do?

Vincent


I try to file a corrupted file (or make it unusable - not readable) during its execution. But I've always the same probleme. Windows does not let me write.
Would there another solution?

See my code :

#lang racket

(define f "file.exe")
(define listOfByte '())

(define (readByteOnFile fileName)
  (call-with-input-file fileName
    (lambda (p-in)
      (define (iter)
        (let ((x (read-byte p-in)))
          (if (eof-object? x)
              (void (set! listOfByte (reverse listOfByte)))
              (begin
                (set! listOfByte (cons x listOfByte))
                (iter)))))
      (iter))))

(define (writeByteOnFile fileName L)
  (port-try-file-lock? (open-output-file f #:exists 'replace) 'shared)
  (call-with-output-file fileName
    (lambda (p-out)
      (define (iter L)
        (if (empty? L)
            (printf "Fini")
            (begin
              (write-byte (car L) p-out)
              (iter (rest L)))))
      (iter L))
    #:exists 'append))

(define (executeFile fileName)
  (shell-execute "open" f "" (current-directory) 'sw_shownormal))

In the order I read Bytes, Execute file and error when writting random Bytes (not in my code), I must find an other solution.
(writeByteOnFile fileName L) is function to re-create my file.


____________________
 Racket Users list:
 http://lists.racket-lang.org/users

Reply via email to