Вниз
Скачать: CL | DM;

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

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.038 c
14-1125051879
DLLKos88
2005-08-26 14:24
2005.09.18
код для склеивания двух exe файлов???


8-1115443767
Kode
2005-05-07 09:29
2005.09.18
wav в wp3


14-1124720939
ocean
2005-08-22 18:28
2005.09.18
PCI2?


3-1123078921
angel_b
2005-08-03 18:22
2005.09.18
Что надо для выполнения обединения (SQL) с участием MEMO полей?


1-1124955133
new_user
2005-08-25 11:32
2005.09.18
ProgressBar




   Наверх