Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.042 c
3-1121344543
Ирина
2005-07-14 16:35
2005.08.28
Отключение связей


6-1116154204
Creo
2005-05-15 14:50
2005.08.28
Програмный выбор сетевого подключения.


14-1123348504
lookin
2005-08-06 21:15
2005.08.28
Подсветка элементов в Code Insight


8-1113586489
Bocman
2005-04-15 21:34
2005.08.28
Обработка массива трехмерных координат


14-1123228858
boriskb
2005-08-05 12:00
2005.08.28
С кем бы вы хотели поговорить?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский