![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Собственно я и сам не в первый раз вижу Delphi, но собственно уткнулся в проблему:
Есть определенный файл, к примеру file.csv(*.csv - обычный текстовый файл, можно из экселя сохранить). Лежит он у меня на сетевом диске, обозначенном буквой T.(не суть важно). Вот в чем проблема: В программке путь задается к каталогу(в нем не только этот файл, а еще много с таким же расширением). В настройках программки, выбираю каталог, в итоге путь к каталогу вида "Т:\". Программно формируется путь к файлу вида "Т:\file.csv". Далее, идут операции с файлом стандартные: Код:
procedure JJJJ()
Var
File:TextFile;
FileName:TFileName;
begin
...
FileName:=PathToFile+'file.csv';
AssignFile(File,Filename);
reset(File)
end;
end;На reset вываливается ошибка "specifed file not found". Но файл есть! Если получить имя файла через диалог (TOpenDialog) все работает, файл читаю, делаю операции и т.д. Но мне нужно программно формировать путь к файлу. В итоге получается: 1. Если файл находится на сетевом диске, то программно сформированный путь к файлу не работает, через диалог работает (файл находится). 2. Если файл находится на локальном диске, то оба варианта работаю(что естественно). Куда капнуть, кто знает? Помогите, уже 3 день бьюсь. Отладчик ничем не помог. Если файл разместить на локальном диске D (например). То путь, полученный от диалога "D:\file.csv" = программно сформированному "D:\File.csv". а с сетевым диском уже нет. Где логика? не знаю среда: Delphi 2010 |
|
#2
|
||||
|
||||
|
Видимо во второй
, для обращения к Файлам лежащих на сетевых папках надо прописывать путь к этим файлам. Например \\DelphistPC\MyFile\file.csv, где DelphistPC - сетевое имя компа, MyFile - папка с нужными тебе провами, file.csv твой файл. Если ты указываешь на Т:\ то такого локального диска нет, отсюда и ошибка.![]() |
|
#3
|
|||
|
|||
|
Такой сетевой диск есть.
Если получить путь к файлу через OpenDialog.FileName - все работает прекрасно. Если преобразовать к UNC, то OpenDialog.FileName тоже работает прекрасно, а вот програмно сформированое имя не работает, хотя преобразовывается к UNC виду. И че делать не знаю.... ![]() |
|
#4
|
||||
|
||||
|
В том то и дело, что ты пытаешься указать на сетевой диск, а дельфи понимает как локальный диск, посмотри куда ссылается диск T.
Если ты в "Мой компьютер" видишь диск Т, это не значит что он твой, это ссылка на другую машину, а путь к ней скрывает ярлык. Это понятно? Посмотри куда ссылается Диск Т и пропиши его |
|
#5
|
|||
|
|||
|
Ну я ж пишу, что UNC путь тоже не отрабатывает, если его програмно сформировать, есть такая функция ExpandUNCFileName которая преобразует к сетевому пути, тоже не работает. выдет путь вида \\server\temp\file.csv для T:\file.csv
Если через диалог открытия файла, все работает - вот в чем вся беда, но мне не нужен диалог открытия файла, программа должна обрабатывать сотни файлов, файлы приходят по интернету и падают в сетевой диск. |
|
#6
|
|||
|
|||
|
а если программно присвоить OpenDialog'у твой путь, а в assingfile брать из него?
|
|
#7
|
|||
|
|||
|
Цитата:
Нет, не пашет Похоже, что проблема в типах данных, но.... и вроде все проверил. Может во время конкатенации строк появляется какой-то скрытый символ, как это можно проверить? |
|
#8
|
||||
|
||||
|
Пройди трейсом строку, где путь берётся из OpenDialog, и посмотри, какой путь в реальности попадает в строку. От этого и пляши.
|
|
#9
|
|||
|
|||
|
А сетевой диск не линуксовый часом?
|
|
#10
|
|||
|
|||
|
Цитата:
Нет, виндовый. Ну дает трейс от opendialog.filename = 'T:\price.csv' - это прям реальные имена. Программно генерируется имя filenameprog = 'T:\price.csv' И они не равны, отладчик в Evaluate показывает opendialog.filename = filenameprog FALSE, тип данных и там и там TFilename (обычный string) Мистика блин. |
|
#11
|
|||
|
|||
|
ну как вариант имя файла скопировать с проводника в переменную. мож буквы разкые, типа язык. как то впарывался так. долго не мог понять.
|
|
#12
|
|||
|
|||
|
Цитата:
Ну блин, ты даешь. Сработало!!!! Но я это имя и так и так переписывал. и бестолку. а тут из проводника скопировал и работает )). Может в редакторе делфей кодировка или типо того не такая? |
|
#13
|
|||
|
|||
|
да нет с кодировкой у дельфи все в порядке, просто буковки с разных языков, например "с"-"е"-"р".
|
|
#14
|
|||
|
|||
|
Рано радовался, почему-то работает только 'price.csv', програмно сгенерированные имена не пашут, жопа.......истина где-то там....
|
|
#15
|
|||
|
|||
|
Ради эксперемента переименуй файлы, в нормальную латиницу.
либо одно из двух... |