Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-34439
ksushishka
2003-04-25 18:54
2003.05.12
Работа с документами Excel


1-34396
Лана Розанова
2003-04-30 10:20
2003.05.12
Excel


11-34386
Igit
2002-08-11 08:25
2003.05.12
Таймер


7-34627
SergeyVasiljev
2003-03-18 18:18
2003.05.12
Как послать байт через переходник USB-LPT, при обращении к LPT?


14-34605
Viktor Kushnir
2003-04-24 11:31
2003.05.12
Чем склеить ДСП?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский