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

Вниз

PChar в DLL   Найти похожие ветки 

 
pvm   (2006-01-06 13:20) [0]

Есть простая функция в DLL. Убирает последний каталог
из пути (s - путь).

function DelLastDir(const s:string):PChar; export; stdcall;
var
 i,pos1,pos2:word;
begin
 pos1:=0;
 pos2:=0;
 for i:=1 to length(s) do
   if s[i]="\" then
   begin
     pos1:=pos2; pos2:=i;
   end;
 result:=PChar(copy(s,0,pos1));
end;

В каких-то случаях работает правильно, а в каких-то сьедает
последний символ "\" из пути.
Например если s="d:\my\dir", то может получиться "d:\my" а должно быть "d:\my\"
Если пишу её не в DLL, а в обычном модуле и вместо PChar - string, то всё работает нормально. При преобразовании PChar(copy(s,0,pos1)) в каких-то случаях теряется последний символ.
Не знаю почему ?


 
Fay ©   (2006-01-06 13:36) [1]

Читал мельком, но смущает
PChar(copy(s,0,pos1));
Замени на 1


 
alex_*** ©   (2006-01-06 13:44) [2]

кстати, лучше строку возвращать не как result, а передавать в функцию указатель на буфер для новой строки и макс. длину буфера, как в GetComputerName. Оно будет универсальнее и надежнее


 
Fay ©   (2006-01-06 13:46) [3]

2 alex_*** ©   (06.01.06 13:44) [2]
На самом деле, я и не заметил 8)
PChar(copy(s,0,pos1)) - это, по большому счёту, указатель в никуда.



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

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
14-1136054592
Иксик
2005-12-31 21:43
2006.01.22
Ой ребята, какие вы все бухие! :))))


6-1128744005
Alex_Korn
2005-10-08 08:00
2006.01.22
Получение нормального адреса


2-1136478936
dera
2006-01-05 19:35
2006.01.22
Как в exe-файл "запихнуть" картинку (jpg)?


14-1135441129
Витёк
2005-12-24 19:18
2006.01.22
Факториал больших чисел!


8-1124134643
Никита
2005-08-15 23:37
2006.01.22
Как залить замкнутый участок в Canvas каким либо цветом