Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

подскажите функцию добавления косой черты к пути [D7, WinXP]


Wolf ©   (2008-01-30 13:04:00) 

Есть путь, например c:\my

Какой функцией можно обработать String чтобы в случае отсутствия в конце косой черты она прибавлялась ?

Чтобы в итоге получилось c:\my\


Anatoly Podgoretsky   (2008-01-30 14:52:00) [1]

> Palladin  (30.01.2008 13:40:14)  [14]

Вообще то грамотно написано, а скорость, у него чтоли милионы добавление в цикле


Palladin   (2008-01-30 13:40:00) [2]

лана, уломали... прелестненькая функция...


ANB   (2008-01-30 13:39:00) [3]


> это не функция, это монстр

Монстр - это самопальные извращения. Хотя, каюсь, пока не увидел (случайно !) в справке штатную функцию - тоже клеил слеш в конце :)


clickmaker   (2008-01-30 13:37:00) [4]

для ФТП, кстати, может использоваться и /


ketmar   (2008-01-30 13:34:00) [5]

>[9] Palladin ©(30.01.08 13:32)
ну, там куча кода для MBCS. но всё равно SysUtils прилинкован, так что не страшно. и вряд ли именно в этой задаче скорость настолько важна.


{RASkov}   (2008-01-30 13:34:00) [6]

> [9] Palladin ©   (30.01.08 13:32)

function IsPathDelimiter(const S: string; Index: Integer): Boolean;
begin
 Result := (Index > 0) and (Index <= Length(S)) and (S[Index] = PathDelim)
   and (ByteType(S, Index) = mbSingleByte);
end;

function IncludeTrailingPathDelimiter(const S: string): string;
begin
 Result := S;
 if not IsPathDelimiter(Result, Length(Result)) then
   Result := Result + PathDelim;
end;

D7
И что же здесь навороченного?)


Palladin   (2008-01-30 13:32:00) [7]

монстр в плане кучи не нужных вызовов, ты видел ее в SysUtils? ужос... а написана для совместимости с Kylix, мир праху его...


{RASkov}   (2008-01-30 13:26:00) [8]

...или [4] т.е.
Function Dumb0002(Const s:String):String;
Begin
If s='' Then Result:='' Else
If s[Length(s)] in ['\',':'] Then Result:=s Else Result:=IncludeTrailingPathDelimiter(S);
End;
:)
Тады да, монстр :)


{RASkov}   (2008-01-30 13:25:00) [9]

> [6] Palladin ©   (30.01.08 13:23)
> это не функция, это монстр

Какая [2] или [1]? :)
И собственно чем они отличаются?)


Palladin   (2008-01-30 13:23:00) [10]


> [4] {RASkov} ©   (30.01.08 13:15)

это не функция, это монстр


Wolf   (2008-01-30 13:16:00) [11]

спасибо большое


{RASkov}   (2008-01-30 13:15:00) [12]

> фу млин Result:=s+'\';

Result:=IncludeTrailingPathDelimiter(S);

:)


Palladin   (2008-01-30 13:07:00) [13]


> Result:=Result+'\';

фу млин Result:=s+'\';


Eraser   (2008-01-30 13:06:00) [14]

IncludeTrailingPathDelimiter


Palladin   (2008-01-30 13:06:00) [15]

Function Dumb0002(Const s:String):String;
Begin
If s='' Then Result:='' Else
If s[Length(s)] in ['\',':'] Then Result:=s Else Result:=Result+'\';
End;


Наверх

Титульная страница Поиск, карта сайта Написать письмо