Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

AssignFile и сеть

434
22 сентября 2004 года
Poltos
105 / / 18.08.2004
Я пытаюсь обратиться к файлу через сеть с помощью процедуры AssignFile(F,'\\Comp\C\Test.txt'), но ничего не получается выдает разные ошибки.
Эксперементировал с путем к файлу, но так к результату не пришел.
[Пишу в XP]

Помогите плз.
368
22 сентября 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Poltos
Я пытаюсь обратиться к файлу через сеть с помощью процедуры AssignFile(F,'\\Comp\C\Test.txt'), но ничего не получается выдает разные ошибки.


Перейди на этот файл с другого компа с Windows Explorerom и посмотри путь в адрес баре.

Неисключено, что сперва в Windows Explorere в Tools->Folder Options...->View нужно будет включить Display the full path in the address bar.

Кроме этого папка должна быть shared.

434
23 сентября 2004 года
Poltos
105 / / 18.08.2004
Цитата:
Originally posted by rostyslav

Перейди на этот файл с другого компа с Windows Explorerom и посмотри путь в адрес баре.

Неисключено, что сперва в Windows Explorere в Tools->Folder Options...->View нужно будет включить Display the full path in the address bar.

Кроме этого папка должна быть shared.



В том и дело что я так делал уже. Может есть другой способ прочитать этот файл?

302
23 сентября 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by Poltos
AssignFile(F,'\\Comp\C\Test.txt')


Попробуй указать путь так \\?\Comp\C\Test.txt
Если не поможет, попробуй обратиться к Api-шной функции CreateFile

434
23 сентября 2004 года
Poltos
105 / / 18.08.2004
Цитата:
Originally posted by Sagittarius

Попробуй указать путь так \\?\Comp\C\Test.txt
Если не поможет, попробуй обратиться к Api-шной функции CreateFile



Я такой путь уже пробовал не помогает.
Функция CreateFile создаст новый файл, а мне нужно прочитать, а не создать.

302
23 сентября 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by Poltos


Я такой путь уже пробовал не помогает.
Функция CreateFile создаст новый файл, а мне нужно прочитать, а не создать.


С помощью CreateFile можно и открывать файлы тоже. Используй флаг OPEN_EXISTING.

434
23 сентября 2004 года
Poltos
105 / / 18.08.2004
Цитата:
Originally posted by Sagittarius

С помощью CreateFile можно и открывать файлы тоже. Используй флаг OPEN_EXISTING.



Пнятно попробую...:)

8.0K
23 сентября 2004 года
Volkov
15 / / 23.09.2004
Цитата:
Originally posted by Poltos

Пнятно попробую...:)



1. Нет у TextFile метода CreateFile.
2. После AssignFile нужно еще и Reset(F);
3. Текстовой файл находится в папке с атрибутом shared?

302
24 сентября 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by Volkov
1. Нет у TextFile метода CreateFile.


О каком методе ты говоришь? CreateFile - это функция WinAPI, которая, кстати говоря, позволяет открывать и создавать не только файлы, но другие объекты ОС.

8.0K
24 сентября 2004 года
Volkov
15 / / 23.09.2004
Цитата:
Originally posted by Sagittarius

О каком методе ты говоришь? CreateFile - это функция WinAPI, которая, кстати говоря, позволяет открывать и создавать не только файлы, но другие объекты ОС.


Типа именованных каналов или портов.

Но с открытым файлом нужно будет работать как с двоичным. Или ReadLn(), WriteLn() работают с возвращенным Handle?

Маловероятно, но возможно вместо "\\Comp\C\Test.txt" нужно бы "\\Comp\C:\Test.txt"

434
24 сентября 2004 года
Poltos
105 / / 18.08.2004
Цитата:
Originally posted by Volkov

Типа именованных каналов или портов.

Но с открытым файлом нужно будет работать как с двоичным. Или ReadLn(), WriteLn() работают с возвращенным Handle?

Маловероятно, но возможно вместо "\\Comp\C\Test.txt" нужно бы "\\Comp\C:\Test.txt"



Пробовал уже, так не работает!
Мне в универе подсказали что эт процедура ваще с сетью не работает, ток локально на своем компе, точно они не знают, но по ходу это так!?

368
24 сентября 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Poltos

Пробовал уже, так не работает!
Мне в универе подсказали что эт процедура ваще с сетью не работает, ток локально на своем компе, точно они не знают, но по ходу это так!?


у меня есть одна программа, там есть код AssignFile(f, '\\Клиент\IN\\'+clb.Items);
и с клиентской машины читает файлы на сервер.
(В пути даже дисковод не указан)

так что, код должен бы работать.

А какие ошибки выдает? Если не секрет...

434
25 сентября 2004 года
Poltos
105 / / 18.08.2004
Цитата:
Originally posted by rostyslav

у меня есть одна программа, там есть код AssignFile(f, '\\Клиент\IN\\'+clb.Items);
и с клиентской машины читает файлы на сервер.
(В пути даже дисковод не указан)

так что, код должен бы работать.

А какие ошибки выдает? Если не секрет...



I/O error 6. (Неверный дескриптор)
Фиг знает че значит... я не знаю

368
25 сентября 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Poltos


I/O error 6. (Неверный дескриптор)
Фиг знает че значит... я не знаю


Это при выполнении процедуры Reset()?
Поставь перед и после процедуры Reset() ShowMessage(),
тогда видно будет, без пошагового выполнения.

434
25 сентября 2004 года
Poltos
105 / / 18.08.2004
Цитата:
Originally posted by rostyslav

Это при выполнении процедуры Reset()?
Поставь перед и после процедуры Reset() ShowMessage(),
тогда видно будет, без пошагового выполнения.



Ошибка после ресет, но я думаю дело не е этом...

368
25 сентября 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Poltos


Ошибка после ресет, но я думаю дело не е этом...


я тоже так думаю...по всей вероятности файл открывается, но после этого, ты вызываешь какую-то функцию, которая не предназначена для работы с дескрипторами текстовых файлов.

1.8K
25 сентября 2004 года
Sanya DLR
123 / / 03.03.2004
procedure TForm1.Button1Click(Sender: TObject);
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;

Когда я подключился по диалапу к интернету, он долго пытался найти этот путь.
302
25 сентября 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by Poltos
\\Comp\C\Test.txt


Разберем строку по частям:
1) Comp - имя отдаленного компьютера
2) C - диск C, я так понимаю, здесь возникает вопрос, он у тебя зашарен или нет?
3) Test.txt - имя файла
Во-первых, у тебя должны быть определенный права на Comp, чтобы ты мог нормально работать с файлом
Во-вторых, попробуй указать строку следующим образом \\Comp\c$\Test.txt

434
25 сентября 2004 года
Poltos
105 / / 18.08.2004
Цитата:
Originally posted by Sagittarius

Разберем строку по частям:
1) Comp - имя отдаленного компьютера
2) C - диск C, я так понимаю, здесь возникает вопрос, он у тебя зашарен или нет?
3) Test.txt - имя файла
Во-первых, у тебя должны быть определенный права на Comp, чтобы ты мог нормально работать с файлом
Во-вторых, попробуй указать строку следующим образом \\Comp\c$\Test.txt



\\Comp\c$\Test.txt - попробовал не работает и права на комп полные, ичтение, и запись...

6.7K
30 сентября 2004 года
Metalslave
37 / / 24.08.2004
Цитата:
Originally posted by Poltos


\\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 ?

434
01 октября 2004 года
Poltos
105 / / 18.08.2004
Путь у меня задан правельный, я уже 200 разных способов перепробовал каб проверить его, хз. может комп глючит, буду разбираться... просто я на других функциях пробовал - работает значит... не знаю че значит)

И 'С'- это моя папка так называется!
434
01 октября 2004 года
Poltos
105 / / 18.08.2004
Все все заработало... по натуре комп глюкнул))
Всеравно Всем спасибо за помощь!:!!!:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог