ноги темы выросли тут
Ссылка
со встроенной функцией понятно, интересует апи
GetCurrentDirectory_() про неё в разных источниках, перевод разных авторов, написано что возвращает именно папку экзешника
но тут смущает наличие
SetCurrentDirectory_(), непонятно зачем это нужно
GetFullPathName_() эта формирует полный путь из текущего пути и заданного имени файла, интересная функция
функция идеально подходит для работы с папками, файлами программы
а что скажет товарищь Smitis
вот две версии кода, они всегда одно выдают
где правда? как правильно получить эту папку?
Procedure myGetCurrentDirectory() Protected pPath.s, n1, n2, *m1, *m2, n3, s.s n1 = GetCurrentDirectory_(0, 0); возвращает необходимую длину строки с учётом стоп байта *m1=AllocateMemory(n1*2); удваиваем под юникод n2 = GetCurrentDirectory_(n1, *m1); читаем путь s = PeekS(*m1); получаем путь без последней косой ;Debug ""+n1+" "+n2+" "+pPath ; извращение, но эффект тот же ; имя обязательно, достаточно одного символа от тёти Фени n1=GetFullPathName_("Nj", 0, 0, 0) *m2=AllocateMemory(n1*2); удваиваем под юникод n2=GetFullPathName_("N", n1, *m2, @n3) ;PokeU(n3, 0); необязательно забивать стоп байт, можно указать сколько символов читать ; -1 это длина имени файла pPath = PeekS(*m2, n2-1); получаем путь откуда запущен экзешник ;Debug ""+n1+" "+n2+" "+Hex(n3)+" "+pPath MessageRequester("",""+n1+" "+n2+" "+Hex(n3)+" "+pPath+#CRLF$+s) ;ShowMemoryViewer(*m2, 111) EndProcedure