Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
ВнизApplication.ExeName и ParamStr(0) Найти похожие ветки
← →
Матка (2003-04-23 05:40) [0]Бррррррррррр!
Почему эти функции возвращают путь к файлу в UpperCase???
Как сделать нормально?
Что-то вроде C:\SuperProga\SuperFile.exe
← →
Separator (2003-04-23 06:22) [1]Работай в Kylix и тода тебе будут возвращаться в нормальном виде. Это происходит потому, что в Windows не имеет значения регистр
← →
Palladin (2003-04-23 07:11) [2]введи в комп все слова которые знаешь...
ищи слова в строке и делай заглавными буквы с которых слова начинаются...
видишь как все просто...
← →
Дмитрий К.К. (2003-04-23 08:56) [3]
> Матка (23.04.03 05:40)
> Бррррррррррр!
> Почему эти функции возвращают путь к файлу в UpperCase???
> Как сделать нормально?
Простой функцией по обработке строк.
← →
jack128 (2003-04-23 09:17) [4]В Delphi 5 Application.EXEName выводит имя файла в "нормальном" виде "C:\Program Files\NT\Borland\Delphi5\Projects\Project1.exe"
← →
kostik78ua (2003-04-23 09:20) [5]Я может не понял вопроса, но Application.ExeName выдает НЕ в UpperCase.
← →
icWasya (2003-04-23 09:39) [6]если будешь запускать из WinComander`а то может получиться вообще
C:\PROGRA~1\NT\BORLAND\DELPHI5\PROGECTS\PROGECT1.EXE
то есть как запустил, так и показывает
← →
Dms (2003-04-23 09:52) [7]можно использовать такую функцию. она позволяет узнать путь не только к EXE, но и к DLL
var
Buffer : array[0..MAX_PATH] of char;
...
GetModuleFileName(HInstance, Buffer, SizeOf(Buffer));
← →
Proton (2003-04-23 10:37) [8]2Dms
А покапай исходники (в delphi 5)
property ExeName: string read GetExeName;
function TApplication.GetExeName: string;
begin
Result := ParamStr(0);
end;
function ParamStr(Index: Integer): string;
var
P: PChar;
Buffer: array[0..260] of Char;
begin
if Index = 0 then
SetString(Result, Buffer, GetModuleFileName(0, Buffer, SizeOf(Buffer)))
else
begin
P := GetCommandLine;
while True do
begin
P := GetParamStr(P, Result);
if (Index = 0) or (Result = "") then Break;
Dec(Index);
end;
end;
end;
← →
Мор (2003-04-24 02:51) [9]Удалено модератором
Примечание: Какое ты к этому имеешь отношение?
← →
Palladin (2003-04-24 07:31) [10]
> Мор (24.04.03 02:51)
Есть у меня на работе одна женщина, которая считает что компьютеры умеют думать. Теперь я знаю, она не одинока в этом мире.
← →
Proton (2003-04-24 09:38) [11]2Мор
Режь на кусочки опираясь на \ в пути. После чего для каждого кусочка используй finfirst findnext findclose, поле чего собирай свою баланду в приятном виде.
И в догонку, не хами.
← →
Palladin (2003-04-24 09:56) [12]
> Proton © (24.04.03 09:38)
да дело в том что парень требует смыслового форматирования
что то вроде C:\SuperProga\SuperFile.exe
где Super и Proga два слова
← →
Proton (2003-04-24 12:10) [13]2Palladin
Думаю что у него
SuperProga и SuperFile уже созданны в указанном регистре.
А нужно ему вывести в этом же виде.
← →
Palladin (2003-04-24 12:12) [14]а по этому поводу ему уже кучу постов сделали
он как будто их не видит
← →
Матка (2003-04-25 03:16) [15]Бррррррррррр!
2 Proton
Я так и пробовал, но посчитал, что это слишком тяжелый вариант
2 Palladin
Нет, файлы дожны быть в том регистре, в котором создавались, то есть: C:\SuperProga C:\SuPeRPrOgA и т.п
Насчет кучи постов: все это я давно пробовал, но все перечисленные функции основаны на GetModuleFileNameA, которая и возвращает строку в ВЕРХНЕМ РЕГИСТРЕ.
Кстати у меня Delphi 6. В названии вопроса указал все версии Delphi, т.к считал, что все они ведут себя одинаково (ведь функция GetModuleFileNameA взята из виндовой DLL).
← →
Palladin (2003-04-25 07:07) [16]
> Матка (25.04.03 03:16)
paramstr(0) у меня все возвращает в жутко красивом виде.
← →
sniknik (2003-04-25 08:26) [17]у меня D6 и тоже все красочно, не моноколор как у тебя. Да и код от пятого не сильно отличается
function ParamStr(Index: Integer): string;
{$IFDEF MSWINDOWS}
var
P: PChar;
Buffer: array[0..260] of Char;
begin
Result := "";
if Index = 0 then
SetString(Result, Buffer, GetModuleFileName(0, Buffer, SizeOf(Buffer)))
else
begin
P := GetCommandLine;
while True do
begin
P := GetParamStr(P, Result);
if (Index = 0) or (Result = "") then Break;
Dec(Index);
end;
end;
{$ENDIF}
{$IFDEF LINUX}
begin
if Index < ArgCount then
Result := PCharArray(ArgValues^)[Index]
else
Result := "";
{$ENDIF}
end;
← →
Матка (2003-04-26 03:08) [18]Тогда может скажите КАК вы пишите код?
Разве так неправильно:
Form1.Caption:=ParamStr(0); ?
← →
Anatoly Podgoretsky (2003-04-26 08:38) [19]Так праильно, а у тебя что ошибку такой код выдает?
← →
Матка (2003-04-28 02:18) [20]2 Anatoly Podgoretsky
А ты тему не читал? Там сказано: строка выходит в ВЕРХНЕМ РЕГИСТРЕ
← →
Anatoly Podgoretsky (2003-04-28 10:43) [21]Так разберись со своей ОС, у остальных выводит как есть, а конструкция правильная, можно еще Application.ExeName и прочии выше приведенные.
← →
Матка (2003-04-29 02:05) [22]Бррррррррррр!
2 Anatoly Podgoretsky
В выше приведенном сказано - Application.ExeName = ParamStr(0)
Насчет ОС: Пробовал на разных виндах, все равно верхний регистр.
← →
Ну (2003-04-29 02:29) [23]2 Матка
Я тоже пробовал. И у меня тоже нет никаких верхних регистров :(((
Система - WinXP.
← →
Separator (2003-04-29 06:55) [24]У меня тоже в верхнем регистре выдаёт, но я почемуто не обращаю на это внимание. Да и вообще какая разница в каком регистре, лишь бы путь был верен
← →
PVOzerski (2003-04-29 10:23) [25]Идейка есть... Может, получится (проверять некогда):
использовать полученное через paramstr(0) значение как маску для sysutils.FindFirst. Сильно подозреваю, что результат будет именно тем, что Вы хотите.
← →
Матка (2003-04-30 01:56) [26]Бррррррррррр!
2 PVOzerski
Я так и пробовал, но посчитал, что это слишком тяжелый вариант
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c