Посл.ответ |
Сообщение |
Ранг: 260.2 (наставник) Активность: 0.19↘0 Статус: Участник
|
Создано: 20 июня 2006 17:49 · Личное сообщение · #1
function TForm1.IsPE(f_name: string): boolean;
Var
buf: array[0..3] of char;
f : file;
begin
AssignFile(f,f_name);
{$i-}
Reset(f);
if IOResult<>0 then exit;
{$i+}
BlockRead(f,buf,2);
if (ord(buf[0])+ord(buf[1]))<>$4D5A then
Result:=false;
CloseFile(f);
end;
При выполнении этой процедуры Delphi выдает ошибку "Access Violation"!
А при запуске из Винды прога закрывается !
В чем ошибка???????
| Сообщение посчитали полезным: |
|
Ранг: 5.0 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 20 июня 2006 17:58 · Личное сообщение · #2
Приведи пример использования ф-и
| Сообщение посчитали полезным: |
Ранг: 199.9 (ветеран), 4thx Активность: 0.12↘0.02 Статус: Участник
|
Создано: 20 июня 2006 18:04 · Личное сообщение · #3
А втом самом AssignFile. Используй лучше FileOpen(PCHar('MyFile.exe'),fmShareDenyNone). В личку я тебе про это уже писал.
Вообще с таким вопросами обращайся лучше www.delphimaster.ru. Тематика форума здесь несколько иная.
| Сообщение посчитали полезным: |
Ранг: 5.0 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 20 июня 2006 18:16 · Поправил: realcoding · Личное сообщение · #4
YDS пишет:
Используй лучше FileOpen(PCHar('MyFile.exe'),fmShareDenyNone)
Дело скорее всего не в этом, AssignFile использовал много раз, все шло гладко.
ЗЫ: AssignFile работает немного быстрее чем FileOpen
АФФТАР выложи сорец или хотяб пример использования, проверю
| Сообщение посчитали полезным: |
Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 20 июня 2006 18:35 · Поправил: Maximus · Личное сообщение · #5
sniperZ вот так попробуй
f : file of byte;
либо так
Reset(f,1);
Все будет работать.
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 260.2 (наставник) Активность: 0.19↘0 Статус: Участник
|
Создано: 20 июня 2006 19:35 · Личное сообщение · #6
Спасибо,Maximus!!!
Reset(f,1);-работает!!!
Тему можно закрывать.
| Сообщение посчитали полезным: |
Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 20 июня 2006 20:31 · Поправил: Hellspawn · Личное сообщение · #7
работает, то работает... но я бы не советовал использовать паскалевский
метод доступа, хотя бы потоки заюзай или как советовал YDS, меньше
проблем будет
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 23.8 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 20 июня 2006 20:34 · Личное сообщение · #8
Лутше юзать createfilea/readfilea, при чтении с сидюков траблы не будет и ваще быстрее
| Сообщение посчитали полезным: |
Ранг: 15.6 (новичок) Активность: 0.03↘0 Статус: Участник
|
Создано: 20 июня 2006 21:07 · Личное сообщение · #9
Luminescent пишет:
Лутше юзать createfilea/readfilea, при чтении с сидюков траблы не будет и ваще быстрее
А какие траблы? Не разу не слышал. Объясни.
| Сообщение посчитали полезным: |
Ранг: 23.8 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 20 июня 2006 23:55 · Личное сообщение · #10
Какие траблы? я когда с сидюков читал писало чёто вроде "I/O Error"
Потом сделал на апи всё работало
| Сообщение посчитали полезным: |
Ранг: 384.1 (мудрец) Активность: 0.25↘0 Статус: Участник www.int3.net
|
Создано: 21 июня 2006 07:40 · Личное сообщение · #11
Hellspawn
Сколько использовал паскалевские методы никогда проблем не возникало, хотя работает медленний, т.к. там полно обработок исключительных ситуаций.
а Reset(f,1); это старая фишка
1 - в данном случае = количеству считываемых и записываемых байт за одну операцию
----- Подписи - ЗЛО! Нужно убирать! | Сообщение посчитали полезным: |
Ранг: 793.4 (! !), 568thx Активность: 0.74↘0 Статус: Участник Шаман
|
Создано: 21 июня 2006 08:10 · Личное сообщение · #12
Сидюк находится на каком то уровне блокировки и читать надо только с флагом SHARE_READ, по крайней мере у меня только так читало.
----- Yann Tiersen best and do not fuck | Сообщение посчитали полезным: |
Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 21 июня 2006 09:27 · Личное сообщение · #13
PE_Kill пишет:
Сидюк находится на каком то уровне блокировки и читать надо только с флагом SHARE_READ, по крайней мере у меня только так читало.
Не смеши, заблокирон. Просто все файлы на CD доступны только для чтения и атрибут у всех файлов соответствующий.
А для того чтобы открыть файл только для чтения с помощью AssignFile, нужно переменной FileMode присвоить 0.
| Сообщение посчитали полезным: |
Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 21 июня 2006 10:17 · Личное сообщение · #14
nice пишет:
Сколько использовал паскалевские методы никогда проблем не возникало, хотя работает медленний, т.к. там полно обработок исключительных ситуаций.
возмножно, но лучше всё таки юзать апи, быстро и сердито да вообще зачем ему дельфи?
пусть на паскале и пишет (Free Pascal)
----- [nice coder and reverser] | Сообщение посчитали полезным: |
Ранг: 793.4 (! !), 568thx Активность: 0.74↘0 Статус: Участник Шаман
|
Создано: 21 июня 2006 10:46 · Личное сообщение · #15
xShadow А 0 - это не равно fmShareCompat? Я говорил про константу, а не про ее значение.
----- Yann Tiersen best and do not fuck | Сообщение посчитали полезным: |