Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
ВнизНе открывается файл 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c