Страница 1 из 1
Работа с exe файлами на pascal'e.
Добавлено: 21 окт 2006, 02:15
StrangeR
Подскажите пожалуйста как в паскале прочитать exe файл и переписать его в другое место.
В целом мне необходимо написать программу пересылки файла через com порт с одного компа на другой, был бы рад получить ответ хотя бы на 1-ю часть вопроса
Добавлено: 23 окт 2006, 13:00
BBB
Прочитать файл (не обязательно exe) при помощи функций Assign, Reset, BlockRead.
Примерно так:
Код: Выделить всё
var F : file;
acBuf : array [0..4000-1] of byte;
wRead : word;
begin
assign (F, 'filename.ext');
reset (F, 1);
while (NOT Eof (F)) do
begin
BlockRead (F, acBuf, Sizeof (acBuf), wRead);
{ Прочитано wRead байт }
..............
do something
..............
end;
close (F);
end.
Добавлено: 23 окт 2006, 13:10
Лелик_1044
StrangeR, StrangeR,
а зачем его чиать?
его надо просто передать по порту
Добавлено: 23 окт 2006, 13:49
somewhere
Рекомендую использовать спецификацию Int 14H по COM порту:
14H 00H Initialize Communications Port
14H 01H Write Character to Communications Port
14H 02H Read Character from Communications Port
14H 03H Get Communications Port Status
14H 04H Extended Initialize Communications Port
14H 05H Extended Communications Port Control
Используя листинг
BBB, добавляем после Blockread :
For I := 0 to wRead-1 do SendChar(acBuf);
Далее ...
Procedure SendChar(aChar:Byte);
begin
asm
mov ah, 01h
mov al, aChar
mov dx, 1 { COM2 number }
int 14H
test ah, 80H
jnz @no_error
.....
something
.....
@no_error:
end;
end;
И не забыть сделать Initialize COM порта перед работой с ним - вот в общем и все:
Input
-----------------------------
AH=00H
AL=initialization parameter
DX=communications port number
(0=COM1, 1=COM2, etc.)
Output
-----------------------------
AH=port status
Bit(s) Significance (if set)
----------------------
7 timed-out
6 transmit shift register empty
5 transmit holding register empty
4 break detected
3 framing error detected
2 parity error detected
1 overrun error detected
0 receive data ready
AL=modem status
Bit(s) Significance (if set)
------ ----------------------
7 receive line signal detect
6 ring indicator
5 data-set-ready
4 clear-to-send
3 change in receive line
signal detect
2 trailing edge ring indicator
1 change in data-set-ready status
0 change in clear-to-send status
Добавлено: 24 окт 2006, 15:28
StrangeR
я вроде разобрался с этим, всем спасибо за советы.