Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

Не открывается файл Reset ом   Найти похожие ветки 

 
Muller   (2005-08-05 23:31) [0]


var
 FName : string;
 DName : array of string;

procedure FileWork(const FileName: string);
var
 F: file;
begin
 Assign(F,FileName);
 Reset(F,1); // чтение по одному байту
 // .......................
 Close(F); // или CloseFile(F) - все равно
end;


обращаюсь
FileWork(FName) - работает
FileWork(DName[k]) - косячит

трассировка показывает, что в случае с DName[k]
процедура IOResult <> 0, т.е. какой-то косяк с файлом:

{$I-}
Reset(Fi,1);
{$I+}
if IOResult <> 0 ... - срабатывает!


пробовал
S := DName[k]; // S - string (глоб var);
FileWork(S);
бесполезно

Где ошибка?


 
Джо ©   (2005-08-05 23:36) [1]

Неверное имя файла передаешь в процедуру. Причем тут Record? Поставь в начале процедуру брэкпойнт и посмотри, чему равен FileName внутри процедуры.


 
Джо ©   (2005-08-05 23:37) [2]

[1] Джо ©   (05.08.05 23:36)
>  Причем тут Record?

Т.е., причем тут Reset?


 
Muller   (2005-08-06 00:00) [3]

какой Record? Нет никакого Record"a!
FileName во всех перечисленных случаях равен тому чему надо
хинт:
Filename = "c:\programming\ultraprog\test\rt.dll";
но с String работает, а с ^array of string не хочет


 
Джо ©   (2005-08-06 00:05) [4]

Приведи весь код, как есть, включая заполнение массива.


 
Palladin ©   (2005-08-06 10:10) [5]

вместо Assign - AssignFile, вместо Close - CloseFile


 
Mx ©   (2005-08-06 10:14) [6]


> Palladin ©   (06.08.05 10:10) [5]
> вместо Assign - AssignFile, вместо Close - CloseFile

Хе, а ведь точно :) А никто и не заметил :)


 
Anatoly Podgoretsky ©   (2005-08-06 11:21) [7]

Ты думаешь точно?


 
Mx ©   (2005-08-06 11:54) [8]


> Anatoly Podgoretsky ©   (06.08.05 11:21) [7]

Сейчас как раз файлами занимался (правда через FileOpen/FileClose), и прочитал заодно что Assign/Close для совместимости сохранено. Облажался...


 
Muller   (2005-08-06 12:42) [9]

еще раз [3]
т.е. при трассировке Filename не пустая строка, а самая что ни на есть живая, но Reset её не берёт

> Palladin ©   (06.08.05 10:10) [5]
> вместо Assign - AssignFile, вместо Close - CloseFile

пробовал - проблема осталась


 
Muller   (2005-08-07 00:22) [10]

IOResult возвращает 32  :0

ничё не понимаю - целый или вещественный тип
чего? не понимаю :(


 
Джо ©   (2005-08-07 00:42) [11]

Приведи, все-таки, заполнение массива DName и все, с ним связанное. Реальный код.


 
Muller   (2005-08-07 11:15) [12]

Дело не в массиве
приводить весь код - много, долго выковыривать

вообще-то приведенный фрагмент процедуры Filework - это расчёт CRC32 передаваемого файла. После замены процедуры на другую с использованием TFileStream (+ модуль Classes) всё работает отлично, поэтому считаю, что ошибка именно в связке Assign - Reset (только непонятно почему)

Проверка на существование файла (FileExists) перед Aassign проходит успешно.

Если пробовать OpenDialog, то OpenDialog.FileName и параметр функции FileName совпадают, но файл не открывается.


 
begin...end ©   (2005-08-07 11:44) [13]

> Muller   (07.08.05 11:15) [12]

Перед Reset добавить FileMode := fmOpenRead не помогает?


 
begin...end ©   (2005-08-07 12:08) [14]

> Muller   (07.08.05 0:22) [10]
> IOResult возвращает 32

ShowMessage(SysErrorMessage(32)): Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.


 
Muller   (2005-08-07 21:18) [15]

вот это не знал
щас пробую


 
Muller   (2005-08-07 23:43) [16]

да, всё ОК, работает
спасибо



Страницы: 1 вся ветка

Текущий архив: 2005.08.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
1-1123513665
Valentin
2005-08-08 19:07
2005.08.28
*.exe в *.exe


3-1121767950
Magic
2005-07-19 14:12
2005.08.28
ADO+LIKE (не работает)


4-1120899178
vvvaaa
2005-07-09 12:52
2005.08.28
RasApi


14-1123249871
Jeer
2005-08-05 17:51
2005.08.28
Ни кто из нас так ни где хорошо не работал как в своем резюме


1-1123584552
Svintus
2005-08-09 14:49
2005.08.28
Как сохранить интернет страницу?