Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.017 c
1-34492
Shuric
2003-04-29 17:50
2003.05.12
Обмен между приложениями


3-34324
Vicheslav
2003-04-21 14:46
2003.05.12
Ув. помогите с запросом.


6-34531
ScaliaR
2003-03-15 04:11
2003.05.12
подсчет трафика в сети.


4-34640
DVM
2003-03-11 13:02
2003.05.12
Прозрачные подписи под значками SysListView32 на WinApi


7-34626
sergwolf
2003-03-18 20:06
2003.05.12
как программировать LPT порт ?