Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.046 c