AssignFile и сеть
Эксперементировал с путем к файлу, но так к результату не пришел.
[Пишу в XP]
Помогите плз.
Я пытаюсь обратиться к файлу через сеть с помощью процедуры AssignFile(F,'\\Comp\C\Test.txt'), но ничего не получается выдает разные ошибки.
Перейди на этот файл с другого компа с Windows Explorerom и посмотри путь в адрес баре.
Неисключено, что сперва в Windows Explorere в Tools->Folder Options...->View нужно будет включить Display the full path in the address bar.
Кроме этого папка должна быть shared.
Перейди на этот файл с другого компа с Windows Explorerom и посмотри путь в адрес баре.
Неисключено, что сперва в Windows Explorere в Tools->Folder Options...->View нужно будет включить Display the full path in the address bar.
Кроме этого папка должна быть shared.
В том и дело что я так делал уже. Может есть другой способ прочитать этот файл?
AssignFile(F,'\\Comp\C\Test.txt')
Попробуй указать путь так \\?\Comp\C\Test.txt
Если не поможет, попробуй обратиться к Api-шной функции CreateFile
Попробуй указать путь так \\?\Comp\C\Test.txt
Если не поможет, попробуй обратиться к Api-шной функции CreateFile
Я такой путь уже пробовал не помогает.
Функция CreateFile создаст новый файл, а мне нужно прочитать, а не создать.
Я такой путь уже пробовал не помогает.
Функция CreateFile создаст новый файл, а мне нужно прочитать, а не создать.
С помощью CreateFile можно и открывать файлы тоже. Используй флаг OPEN_EXISTING.
С помощью CreateFile можно и открывать файлы тоже. Используй флаг OPEN_EXISTING.
Пнятно попробую...:)
Пнятно попробую...:)
1. Нет у TextFile метода CreateFile.
2. После AssignFile нужно еще и Reset(F);
3. Текстовой файл находится в папке с атрибутом shared?
1. Нет у TextFile метода CreateFile.
О каком методе ты говоришь? CreateFile - это функция WinAPI, которая, кстати говоря, позволяет открывать и создавать не только файлы, но другие объекты ОС.
О каком методе ты говоришь? CreateFile - это функция WinAPI, которая, кстати говоря, позволяет открывать и создавать не только файлы, но другие объекты ОС.
Типа именованных каналов или портов.
Но с открытым файлом нужно будет работать как с двоичным. Или ReadLn(), WriteLn() работают с возвращенным Handle?
Маловероятно, но возможно вместо "\\Comp\C\Test.txt" нужно бы "\\Comp\C:\Test.txt"
Типа именованных каналов или портов.
Но с открытым файлом нужно будет работать как с двоичным. Или ReadLn(), WriteLn() работают с возвращенным Handle?
Маловероятно, но возможно вместо "\\Comp\C\Test.txt" нужно бы "\\Comp\C:\Test.txt"
Пробовал уже, так не работает!
Мне в универе подсказали что эт процедура ваще с сетью не работает, ток локально на своем компе, точно они не знают, но по ходу это так!?
Пробовал уже, так не работает!
Мне в универе подсказали что эт процедура ваще с сетью не работает, ток локально на своем компе, точно они не знают, но по ходу это так!?
у меня есть одна программа, там есть код AssignFile(f, '\\Клиент\IN\\'+clb.Items);
и с клиентской машины читает файлы на сервер.
(В пути даже дисковод не указан)
так что, код должен бы работать.
А какие ошибки выдает? Если не секрет...
у меня есть одна программа, там есть код AssignFile(f, '\\Клиент\IN\\'+clb.Items);
и с клиентской машины читает файлы на сервер.
(В пути даже дисковод не указан)
так что, код должен бы работать.
А какие ошибки выдает? Если не секрет...
I/O error 6. (Неверный дескриптор)
Фиг знает че значит... я не знаю
I/O error 6. (Неверный дескриптор)
Фиг знает че значит... я не знаю
Это при выполнении процедуры Reset()?
Поставь перед и после процедуры Reset() ShowMessage(),
тогда видно будет, без пошагового выполнения.
Это при выполнении процедуры Reset()?
Поставь перед и после процедуры Reset() ShowMessage(),
тогда видно будет, без пошагового выполнения.
Ошибка после ресет, но я думаю дело не е этом...
Ошибка после ресет, но я думаю дело не е этом...
я тоже так думаю...по всей вероятности файл открывается, но после этого, ты вызываешь какую-то функцию, которая не предназначена для работы с дескрипторами текстовых файлов.
var f:TextFile;
s:string;
begin
{$I-} //Чтобы не вызывал исключения, а можно было смотреть IOResult
assignfile(f,'//localhost/c:\11');
reset(f);
showmessage(SysErrorMessage(IOResult)); //У меня правда сети нет :( , и он кажет, что не найден сетевой путь. Значит наверное все таки он пытается его искать! :)
readln(f,s);
showmessage(s);
CloseFile(f);
{$I+}
end;
Когда я подключился по диалапу к интернету, он долго пытался найти этот путь.
\\Comp\C\Test.txt
Разберем строку по частям:
1) Comp - имя отдаленного компьютера
2) C - диск C, я так понимаю, здесь возникает вопрос, он у тебя зашарен или нет?
3) Test.txt - имя файла
Во-первых, у тебя должны быть определенный права на Comp, чтобы ты мог нормально работать с файлом
Во-вторых, попробуй указать строку следующим образом \\Comp\c$\Test.txt
Разберем строку по частям:
1) Comp - имя отдаленного компьютера
2) C - диск C, я так понимаю, здесь возникает вопрос, он у тебя зашарен или нет?
3) Test.txt - имя файла
Во-первых, у тебя должны быть определенный права на Comp, чтобы ты мог нормально работать с файлом
Во-вторых, попробуй указать строку следующим образом \\Comp\c$\Test.txt
\\Comp\c$\Test.txt - попробовал не работает и права на комп полные, ичтение, и запись...
\\Comp\c$\Test.txt - попробовал не работает и права на комп полные, ичтение, и запись...
Народ,
строка:
\\Comp\C\filename.txt означает
1. Comp - имя компа
2. С - ИМЯ РАЗШАРЕНОГО КАТАЛОГА а не буква диска!!! И не имеет значения на каком диске эта папка!!!
3. filename.txt имя файла в разшареном каталоге С.
вообщем мож я кого и повторю но: такие строки
var
f: textFile;
str : string;
begin
assignFile(f,'\\Admin\new\test.txt');
reset(f);
readln(f, str);
closefile(f);
end;
у меня тож работаюn прилично и без ошибок (на компе Admin, открыта папка с общим доступом New и в ней файл Test.txt)....
Если всетаки не получаеться ... советую вот что ...
зделай програму с такими строками
var
str : string;
begin
getdir(0,str);
label.caption := str;
end;
запусти ее через сеть... тоесть размести на локальном компе в разшареной папке... и запусти з другого...
Label покажет тебе полную строку откуда ты запустил програму, если ты в эту же папку добавиш свой файл то assignFile должен работать.... и вообще а ты проверял на FileExists(filename) что возвращает true/false ?
И 'С'- это моя папка так называется!
Всеравно Всем спасибо за помощь!:!!!: