Главная страница
    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.48 MB
Время: 0.043 c
1-1123149634
Alexey_T-O
2005-08-04 14:00
2005.08.28
Проблема с переменной


1-1123650757
gma
2005-08-10 09:12
2005.08.28
Проблема с FastReport


3-1121407660
Леха
2005-07-15 10:07
2005.08.28
Запрос на выборку похожих записей.


14-1122835504
Гаврила
2005-07-31 22:45
2005.08.28
Во Вторую Мировую Войну СССР вступил на стороне


3-1121768336
integery
2005-07-19 14:18
2005.08.28
Как вставить в таблицу значение Id из справочников ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский