Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.07.2010, 13:23
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию Проблема с получением адреса файла

Снова здрасте

В функцию paramstr(1) передается путь к файлу при открытии программы. Так вот, если я открываю его, например, на диске C, то путь такой:
Код HTML:
"С:\file.txt"
, а вот если на рабочем столе, то передается это:
Код HTML:
C:\DOCUME~1\Admin\0016~1\8636~1.TXT
Естественно такой путь дельфи не воспринимает, и загрузить файл например в Memo, невозможно. Как можно получить полный путь?
Ответить с цитированием
  #2  
Старый 03.07.2010, 13:36
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

А вобще то вот такой путь попробуй C:\Users\User\Desktop\имя_файла. Просто вся фишка в том, что в папке Users хранится и папка рабочего.Ищещь папку внутри с именем юзера и там папку Desktop
Ответить с цитированием
  #3  
Старый 03.07.2010, 13:41
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

Вот кодес с другого форума, из этой переменной окружения и адрес рабочего стала получите:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
SetLength(s, 1000);
windows.GetEnvironmentVariable('USERPROFILE',pchar(S),length(s));
caption:=s;
end;
Ответить с цитированием
  #4  
Старый 03.07.2010, 13:46
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

Понимаете, неизвестно что передастся в эту функцию. Мне скорее нужно написать отдельную функцию, которая преобразует эти виндовые сокращенные адреса в полноценные.
Ответить с цитированием
  #5  
Старый 03.07.2010, 13:54
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

А можете конкретней задачу описать?
Ответить с цитированием
  #6  
Старый 03.07.2010, 14:01
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

Я же писал. Знаете когда файл открывается с помощью какой-то одной программы? Вот у меня также, есть спец. расширение файла, которое понимает только моя утилита, пользователь щелкает на файл, и открывается приложение, которому передается имя открытого файла. Вот это самое имя(точнее путь к нему), зачастую имеет сокращенный виндовый вид, а мне нужно получить полный.
Ответить с цитированием
  #7  
Старый 03.07.2010, 14:09
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

Похоже Вы правы Придется отдельно писаь
Ответить с цитированием
  #8  
Старый 03.07.2010, 16:38
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Это ж какая винда передаёт адреса в дос-формате? Начиная с 2000, все виндовсы возвращают нормальный человеческий адрес...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #9  
Старый 03.07.2010, 16:55
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

DJ PhoeniX
XP передает такой адрес, есть какие-либо пути решения?
Ответить с цитированием
  #10  
Старый 03.07.2010, 17:03
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Странно... на всей моей памяти программирования, такое было только при запуске в 98 и более низких...

Погугли, я 100% видел функцию преобразования, но где - хоть убей, не помню. Я тож поищу - найду - отпишу.

П.С. это не для конкурса ли моего тебе по ассоциации надо текстовый файл открыть?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj

Последний раз редактировалось PhoeniX, 03.07.2010 в 17:05.
Ответить с цитированием
  #11  
Старый 03.07.2010, 17:11
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Нашёл обратную функцию.
Код:
function ShortPathName(const path: String): string;
var
  s: String;
begin
  Setlength(s, 255);
  if GetShortPathName(path, PChar(s), 255) = 0 then
    { Function failed; maybe the path doesn't exist }
    Result := ''
  else
    Result := Trim(s);
end;
Но эксперимент показал, что помимо GetShortPathName есть и GetFullPathName. Надеюсь, с заменой пяти символов справишься?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj

Последний раз редактировалось PhoeniX, 03.07.2010 в 17:14.
Ответить с цитированием
  #12  
Старый 03.07.2010, 17:13
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

Цитата:
П.С. это не для конкурса ли моего тебе по ассоциации надо текстовый файл открыть?
спалил Осталось реализовать только эту мелочь, софт то готов
Ответить с цитированием
  #13  
Старый 03.07.2010, 17:13
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

Вот тебе статейка с функой) Но она NT http://eretik.omegahg.com/art/04.html
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:43.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025