Форум: "Основная";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];
ВнизВыявить библиотеки, к которым обращается проект, Найти похожие ветки
← →
Денис (2005-07-05 01:55) [0]Дописал я одну свою прогу - у меня работает нормально. Переслал другу - у него выдает ошибки.
Ещё не знаю что именно за сообщения, но подозреваю, что не хватает ему каких нибудь библиотек, из тех, что мне Делфи дружески накидал в систему. Возможно.
Так вот, как же выявить все библиотеки, к которым обращается проект, и ,ещё важнее,- как их грамотно перенести на другой комп?
← →
Юрий Зотов © (2005-07-05 02:03) [1]> как же выявить все библиотеки, к которым обращается проект
Запустите программу из-под Delphiи в ее меню выберите
View | Debug windows | Modules
Получите полный список всех DLL и прочих модулей, загруженных программой в данный момент.
> как их грамотно перенести на другой комп?
Те, которые на другом компе уже есть, переносить не надо, потому что они могут зависеть от версии системы. Те, которых нет, надо просто записать в каталог самой программы или в любой каталог, доступный через переменную системного окружения Path.
← →
Денис (2005-07-06 06:22) [2]Спасибо огромное.
А если ненароком продублировать в каталоге программы системную библиотеку, каковы могут быть последствия?
← →
-=XP=- © (2005-07-06 07:14) [3]каковы могут быть последствия?
Переслал другу - у него выдает ошибки.
← →
Digitman © (2005-07-06 08:26) [4]
> Денис (06.07.05 06:22) [2]
> продублировать в каталоге программы .. библиотеку
это еще надо умудриться - создать в одном и том же каталоге два файла с одинаковыми именами и расширениями
← →
Денис (2005-07-07 01:17) [5]
> > продублировать в каталоге программы .. библиотеку
>
>
> это еще надо умудриться - создать в одном и том же каталоге
> два файла с одинаковыми именами и расширениями
А кто сказал об одном и том же каталоге?
Я говорю про каталог программы и системный каталог.
> каковы могут быть последствия?
>
> Переслал другу - у него выдает ошибки.
Напрасно скалитесь, я это предположил , но пока не совершал. :-)
← →
Digitman © (2005-07-07 08:44) [6]
> Денис (07.07.05 01:17) [5]
> А кто сказал об одном и том же каталоге?
> Я говорю про каталог программы и системный каталог.
"Ты сказал !"(с)
цитирую :
> ненароком продублировать в каталоге программы
как ты сказал, так я тебя и понял .. ибо речи о сист.каталоге и не было ..
ну а от того что, скажем, файл rtl70.bpl будет присутствовать и в каталоге программы и в сист.каталоге, ничего страшного ровным счетом не произойдет : система будет искать этот файл сначала в текущем каталоге, затем (если не нашла) - в системном, затем (если и там не нашла) - в путях, прописанных в SET PATH ... первый же найденный и будет пытаться использовать ...
← →
Денис (2005-07-07 20:39) [7]
> в путях, прописанных в SET PATH
А можно поподробнее насчёт этого SET PATH .
Это что переменная?
Что значит "переменная системного окружения Path"?
← →
begin...end © (2005-07-07 20:42) [8]> Денис (07.07.05 20:39) [7]
> Что значит "переменная системного окружения Path"?
В XP: Панель управления -> Система -> Дополнительно -> Переменные среды.
Однако эти переменные могут быть изменены для конкретного процесса (с помощью SetEnvironmentVariable).
← →
Денис (2005-07-08 05:29) [9]
> Что значит "переменная системного окружения Path"?
>
> В XP: Панель управления -> Система -> Дополнительно -> Переменные
> среды.
> Однако эти переменные могут быть изменены для конкретного
> процесса (с помощью SetEnvironmentVariable).
О, спасибо!
А я тут и код надыбал!Выставить системные переменные среды
function SetGlobalEnvironment(const Name, Value: string;
const User: Boolean = True): Boolean;
resourcestring
REG_MACHINE_LOCATION = "SystemCurrentControlSetControlSession ManagerEnvironment";
REG_USER_LOCATION = "Environment";
begin
with TRegistry.Create do
try
if User then { User Environment Variable }
Result := OpenKey(REG_USER_LOCATION, True)
else { System Environment Variable }
begin
RootKey := HKEY_LOCAL_MACHINE;
Result := OpenKey(REG_MACHINE_LOCATION, True);
end;
if Result then
begin
WriteString(Name, Value); { Write Registry for Global Environment }
{ Update Current Process Environment Variable }
SetEnvironmentVariable(PChar(Name), PChar(Value));
{ Send Message To All Top Window for Refresh }
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar("Environment")));
end;
finally
Free;
end;
end; { SetGlobalEnvironment }
← →
Денис (2005-07-08 05:36) [10]
> могут быть изменены для конкретного процесса
А что значит для конкретного процесса ?
Разве этот Path не включает все возможные пути для любых процессов?
← →
Денис (2005-07-08 05:37) [11]Получение переменных среды
procedure GetEnvironmentStrings(ss:TStrings);
{Переменные среды}
var
ptr: PChar;
s: string;
Done: boolean;
begin
ss.Clear;
s:="";
Done:=FALSE;
ptr:=windows.GetEnvironmentStrings;
while Done=false do begin
if ptr^=#0 then begin
inc(ptr);
if ptr^=#0 then Done:=TRUE
else ss.Add(s);
s:=ptr^;
end else s:=s+ptr^;
inc(ptr);
end;
end;
← →
Digitman © (2005-07-08 09:05) [12]
procedure GetEnvironmentStrings(ss:TStrings);
var
ptr,ptr1: PChar;
s: string;
begin
ss.Clear;
ptr := Windows.GetEnvironmentStrings;
ptr1 := ptr;
try
s := StrPas(ptr1);
while s <> "" do
begin
ss.Add(s);
Inc(ptr1, Length(s) + 1);
s := StrPas(ptr1);
end;
finally
FreeEnvironmentStrings(ptr); //!!!
end;
end;
← →
evvcom © (2005-07-08 09:20) [13]
> Разве этот Path не включает все возможные пути для любых
> процессов?
При создании процесса локальная переменная Path (в области видимости данного процесса) инициализируется в соответствии с глобальными настройками системы, а уж далее конкретный процесс может эти настройки изменить.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.012 c