Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Вниз

Как получить имя файла   Найти похожие ветки 

 
Dot   (2005-07-27 11:30) [0]

Приветсвую вас Мастера!.
Собственно сабж.
Как проще всего получить программе свое собственное имя.
Просто от этого зависят процедуры, а если переименовать файл то все идет коту под хвост..
Думал paramstr(0) но это неприемлимо, ибо мне не полный путь нужен а просто имя файла


 
Плохиш ©   (2005-07-27 11:34) [1]

Мда, ExtractFileName(ParamStr(0));


 
GLFox ©   (2005-07-27 11:34) [2]

ExtractFileName(ParamStr(0))


 
Dot   (2005-07-27 11:38) [3]

А через Апи никак ? Чтобы sysutils не подгружать?


 
GLFox ©   (2005-07-27 11:44) [4]

А код функции ExtractFileName в SysUtils посмотреть лень? Возьми и выдери ее оттуда.


 
Antonn ©   (2005-07-27 11:56) [5]

const EmptyString: string = "";
     DirDelimiters: PChar = ":\";

procedure EAX2PChar;
asm
       TEST     EAX, EAX
       JNZ      @@exit
       MOV      EAX, offset[EmptyString]
@@exit:
end;

function __DelimiterLast(Str: PChar; Delimiters: PChar): PChar;
asm
       PUSH     ESI

       CALL     EAX2PChar

       MOV      ESI, EDX
       MOV      EDX, EAX

@@tolast:
       CMP      byte ptr [EAX], 0
       JZ       @@next1
       INC      EAX
       JMP      @@tolast

@@next1:
       PUSH     EAX

@@next:
       LODSB
       TEST     AL, AL
       JZ       @@exit

       PUSH     EDX
       XCHG     EDX, EAX
       CALL     StrRScan
       POP      EDX

       TEST     EAX, EAX
       JZ       @@next

       POP      ECX
       CMP      byte ptr [ECX], 0
       JZ       @@next1

       CMP      EAX, ECX
       JG       @@next1

       PUSH     ECX
       JLE      @@next

@@exit: POP      EAX
       POP      ESI
end;

function ExtractFileName(const Path: string): string;
asm
       PUSH     EDX
       PUSH     EAX
       MOV      EDX, [DirDelimiters]
       CALL     __DelimiterLast
       POP      EDX
       CMP      byte ptr [EAX], 0
       JZ       @@1
       XCHG     EDX, EAX
       INC      EDX
@@1:    POP      EAX
       CALL     System.@LStrFromPChar
end;

(С) не мое, говорят из КОЛ выдернули


 
Плохиш ©   (2005-07-27 12:08) [6]


> Dot   (27.07.05 11:38) [3]
> А через Апи никак ? Чтобы sysutils не подгружать?

Возможности для извращений безграничны

FindFirstFile

и никаких SysUtils ;-)


 
Dot   (2005-07-27 13:06) [7]

Да спасибо, сам извратился +)
function ExFileName: string;
var
bufstr: string;
i: integer;
fn: string;
count: integer;
begin
 fn:=paramstr(0);
   for i:=1 to length(fn) do
    begin
      if Copy(fn,i,1)="\" then
       count:=i;
    end;
 for i:=count+1 to length(fn) do
 begin
   bufstr:=bufstr+Copy(fn,i,1);
 end;
ExFileName:=bufstr;
end;


 
begin...end ©   (2005-07-27 13:33) [8]

> Dot   (27.07.05 13:06) [7]

function ExFileName: string;
var
 L: Integer;
begin
 Result := ParamStr(0);
 L := Length(Result);
 while (L > 0) and (Result[L] <> "\") do Dec(L);
 Result := Copy(Result, L + 1, MaxInt)
end.


 
Antonn ©   (2005-07-27 14:38) [9]

а у меня трава лучше...



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
14-1124546455
desam
2005-08-20 18:00
2005.09.18
Драйвера


2-1123831866
Гость22
2005-08-12 11:31
2005.09.18
Где найти готовую форму для введения пароля?


14-1125068262
Карелин Артем
2005-08-26 18:57
2005.09.18
Средства коллективной разработки для Дельфи 7. Что посоветуете?


14-1124883282
КаПиБаРа
2005-08-24 15:34
2005.09.18
Актуальные проблемы в сфере разработки ПО


5-1098760190
Kair()
2004-10-26 07:09
2005.09.18





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский