Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Помощь по Delphi
Посл.ответ Сообщение

Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 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.010
Статус: Участник

Создано: 20 июня 2006 17:58
· Личное сообщение · #2

Приведи пример использования ф-и




Ранг: 199.9 (ветеран), 4thx
Активность: 0.120.02
Статус: Участник

Создано: 20 июня 2006 18:04
· Личное сообщение · #3

А втом самом AssignFile. Используй лучше FileOpen(PCHar('MyFile.exe'),fmShareDenyNone). В личку я тебе про это уже писал.
Вообще с таким вопросами обращайся лучше www.delphimaster.ru. Тематика форума здесь несколько иная.



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 20 июня 2006 18:16 · Поправил: realcoding
· Личное сообщение · #4

YDS пишет:
Используй лучше FileOpen(PCHar('MyFile.exe'),fmShareDenyNone)

Дело скорее всего не в этом, AssignFile использовал много раз, все шло гладко.

ЗЫ: AssignFile работает немного быстрее чем FileOpen

АФФТАР выложи сорец или хотяб пример использования, проверю




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 20 июня 2006 18:35 · Поправил: Maximus
· Личное сообщение · #5

sniperZ вот так попробуй

f : file of byte;

либо так

Reset(f,1);

Все будет работать.

-----
StarForce и Themida ацтой!




Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 20 июня 2006 19:35
· Личное сообщение · #6

Спасибо,Maximus!!!
Reset(f,1);-работает!!!
Тему можно закрывать.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 20 июня 2006 20:31 · Поправил: Hellspawn
· Личное сообщение · #7

работает, то работает... но я бы не советовал использовать паскалевский
метод доступа, хотя бы потоки заюзай или как советовал YDS, меньше
проблем будет

-----
[nice coder and reverser]




Ранг: 23.8 (новичок)
Активность: 0.020
Статус: Участник

Создано: 20 июня 2006 20:34
· Личное сообщение · #8

Лутше юзать createfilea/readfilea, при чтении с сидюков траблы не будет и ваще быстрее



Ранг: 15.6 (новичок)
Активность: 0.030
Статус: Участник

Создано: 20 июня 2006 21:07
· Личное сообщение · #9

Luminescent пишет:
Лутше юзать createfilea/readfilea, при чтении с сидюков траблы не будет и ваще быстрее

А какие траблы? Не разу не слышал. Объясни.



Ранг: 23.8 (новичок)
Активность: 0.020
Статус: Участник

Создано: 20 июня 2006 23:55
· Личное сообщение · #10

Какие траблы? я когда с сидюков читал писало чёто вроде "I/O Error"
Потом сделал на апи всё работало



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 21 июня 2006 07:40
· Личное сообщение · #11

Hellspawn
Сколько использовал паскалевские методы никогда проблем не возникало, хотя работает медленний, т.к. там полно обработок исключительных ситуаций.

а Reset(f,1); это старая фишка
1 - в данном случае = количеству считываемых и записываемых байт за одну операцию

-----
Подписи - ЗЛО! Нужно убирать!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 21 июня 2006 08:10
· Личное сообщение · #12

Сидюк находится на каком то уровне блокировки и читать надо только с флагом SHARE_READ, по крайней мере у меня только так читало.

-----
Yann Tiersen best and do not fuck




Ранг: 54.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 21 июня 2006 09:27
· Личное сообщение · #13

PE_Kill пишет:
Сидюк находится на каком то уровне блокировки и читать надо только с флагом SHARE_READ, по крайней мере у меня только так читало.

Не смеши, заблокирон. Просто все файлы на CD доступны только для чтения и атрибут у всех файлов соответствующий.
А для того чтобы открыть файл только для чтения с помощью AssignFile, нужно переменной FileMode присвоить 0.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 21 июня 2006 10:17
· Личное сообщение · #14

nice пишет:
Сколько использовал паскалевские методы никогда проблем не возникало, хотя работает медленний, т.к. там полно обработок исключительных ситуаций.


возмножно, но лучше всё таки юзать апи, быстро и сердито да вообще зачем ему дельфи?
пусть на паскале и пишет (Free Pascal)

-----
[nice coder and reverser]





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 21 июня 2006 10:46
· Личное сообщение · #15

xShadow А 0 - это не равно fmShareCompat? Я говорил про константу, а не про ее значение.

-----
Yann Tiersen best and do not fuck



 eXeL@B —› Программирование —› Помощь по Delphi
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати