Главная страница
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.031 c
6-1110641616
ТехникПТО
2005-03-12 18:33
2005.08.28
Как загрузить HTML-код в определенный фрейм страницы браузера?


1-1123167746
timerlan
2005-08-04 19:02
2005.08.28
что в этом коде не то


4-1121231982
Jupiter
2005-07-13 09:19
2005.08.28
Архивация с помощью ARJ


1-1123516131
TStas
2005-08-08 19:48
2005.08.28
Как быстрее, передать подпрограмме указатель на объект или ..


4-1121056430
Untermensch
2005-07-11 08:33
2005.08.28
Как заставить систему выйти диалапом в инет и обратно.