Помогите определить путь файла

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

У меня такая проблема - необходимо поместить файл с данными (драйвер
TopSpeed) - в директорий с Windows.

При этом, в принципе, на разных компьютерах каталог Windows может
называться по-разному (Win98, Win и т.д.) и находиться на разных диках.

Как можно в словаре прописать путь к файлу, чтобы на всех компьютерах
он помещался именно в каталог Windows?

Пробовал задать путь вида %SystemRoot%\asd.tps - не понимает.

ys@antonovus.ru
Гость

Сообщение Гость »

Это не простая задача.В ДОС была такая внешняя штучка под названием
Fname,которая позволяла решить эту проблему.Один из путей,проверенных мной:
1-укажи в качестве пути глобальную переменную
2-после компиляции в головном модуле руками убери кавычки в оформлении
пути к файлу
3-до начала работы основных модулей программы "попроси" usera ввести путь
к нужной директории или считай путь из дополнительного файла,затем
присвой это значение глобальной переменной.Все должно заработать.
Может есть и более элегантный метод решения.Если найдешь,обязательно выложи на форум.
Успехов! Lsgsoftware
Гость

Сообщение Гость »

Функция API GetWindowsDirectory возвращает путь к системному каталогу Windows, как бы он ни назывался и где бы он ни находился.
Пробовал?
С уважением,
Mit
Гость

Сообщение Гость »

Задача довольно простая.
выполняешь пункт 1 послания
далее используй WinApi (GetWindowsDirectory)

GetWindowsDirectory returns the full pathname of the windows directory.

в Global Map

MODULE('WINAPI')
GetWindowsDirectory(*CSTRING,UNSIGNED),UNSIGNED,PASCAL,RAW,NAME('GetWindowsDirectoryA')
END

где тебе надо

DATA

LOC:WindowsDirectory CString(255)

Code

If GetWindowsDirectory(LOC:WindowsDirectory,Size(LOC:WindowsDirectory))
Message(LOC:WindowsDirectory)
End
:)
Написал: Ravenous(3)
Гость

Сообщение Гость »

См. переменную окружения WINDIR

Igor Gubin <igor@quantor.com>

(Добавление)

Типа ФАК :-)
http://www.clarionline.h1.ru/index.php? ... iew&qid=48

Вопрос: Необходимо в приложениии определить в какой каталог установлена Windows. Как это сделать?

Ответ 1: Ниже пример кода для получения Windows-каталога:
В глобальном MAP'е описываем прототип:

Код: Выделить всё

MODULE('win32')  
  COMPILE('***',_WIDTH32_)
GetWindowsDirectory(*CSTRING,UNSIGNED),UNSIGNED,PASCAL,RAW,NAME('GetWindowsDirectoryA')
  !***
END
В коде процедуры:

Код: Выделить всё

! Секция данных
LOC:WinDir   CSTRING(256)
LOC:Size     UNSIGNED
LOC:Flag     UNSIGNED

! Секция кода
LOC:Size = SIZE(LOC:WinDir)
LOC:Flag = GetWindowsDirectory(LOC:WinDir,LOC:Size)
IF LOC:Flag AND LOC:Flag =< LOC:Size
  MESSAGE('Windows здесь -> ' & CLIP(LOC:WinDir),'Каталог Windows')
END
Функция возвращает ненулевое значение в случае успешного завершения, иначе 0.

Алексей,
начальник отдела ПТО
ООО "ОРК"

mail: alex@jrcn.donetsk.ua, icq: 62605472
www: http://atinet.hypermart.net
http://www.nikasoft.co.uk
http://www.clarionline.h1.ru (FAQ-онлайн)
irc: irc.lucky.net:6669, channel #clarion, Bambino
origin: Hезавидна участь того, кому никто не завидует.
Написал: ClaList(2)
Гость

Сообщение Гость »

Код: Выделить всё

   MAP
     MODULE('Windows API')
       GetWindowsDir(*CSTRING, USHORT), USHORT, RAW, PASCAL, NAME('GetWindowsDirectoryA')
     END
   END

SystemFolder                         CSTRING(255)
  code
  Res# = GetWindowsDir(SystemFolder, SIZE(SystemFolder))
  MESSAGE(SystemFolder)
--
Всего хорошего
Evgeny mailto:mixer@clarionlife.net
Сайт для кларионистов: http://www.clarionlife.net
Clarion FAQ: http://www.clarionlife.net/cgi-bin/bl_faq.pl?comm=tree
Написал: ClaList(2)
Ответить