Avatar billede psycosoft-funware Nybegynder
10. april 2006 - 15:58 Der er 11 kommentarer og
2 løsninger

kontrollere en streng for om der skulle være for mange backslash

hej experter

jeg har lave denne lille function:
function ChangeFilePath(const FileName, NewPath: String): String;
begin
    Result := NewPath + '\' + ExtractFileName(FileName);
end;

den ændre stien i et filnavn. men den har et lille problem, fordi hvis brugeren vælger et hoveddrev, fx c:\, vil den putte et \ for meget på dvs i stede for c:\123.test vil det blive til c:\\s123.test

men, hvis brugeren har valgt et mappe fx c:\test, så bliver filnavnet rigtigt.
hvordan kan jeg så kontrollere en streng for om det skal have tilføjet det backslash?

/FunteX! :-)
Avatar billede kroning Nybegynder
10. april 2006 - 16:08 #1
if (NewPath<>'') and (NewPath[Length(NewPath)]<>'\') then
  NewPath:=NewPath+'\';
Result := NewPath + ExtractFileName(FileName);
Avatar billede psycosoft-funware Nybegynder
10. april 2006 - 16:13 #2
tusind tak kroning, det virker bare... :D

smid et svar og der er point :)

/FunteX! :-)

PS: og tak for hjælpen med TListView :D
Avatar billede snowball Novice
10. april 2006 - 16:26 #3
Hvorfor ikke bruge "IncludeTrailingBackslash" funktionen når den nu findes!? :)

Hvis der mangler en "\", så tilføjes den, hvis ikke, så laver den ikke noget.
Avatar billede snowball Novice
10. april 2006 - 16:27 #4
Manglede lige eksemplet ;)

Result := IncludeTrailingBackslash(NewPath) + ExtractFileName(FileName);
Avatar billede kroning Nybegynder
10. april 2006 - 16:34 #5
Ja hvorfor ikke, fordi den havde jeg lige glemt fantes. Men hvorfor så ikke bruge den nye og ikke den gamle:

Som der står i SysUtils:
//IncludeTrailingBackslash is the old name for IncludeTrailingPathDelimiter

Result := IncludeTrailingPathDelimiter(NewPath) + ExtractFileName(FileName);

:-)
Avatar billede psycosoft-funware Nybegynder
10. april 2006 - 16:39 #6
jeg havde også helt glemt IncludeTrailingPathDelimiter fantes.... :)
derfor oprettede jeg dette spm... flovt...

/FunteX! :-)
Avatar billede snowball Novice
10. april 2006 - 17:03 #7
Forskellen på de 2 er jo "bare" at IncludeTrailingPathDelimiter bytter "\" ud med "/" hvis man bruger Linux.
Avatar billede kroning Nybegynder
10. april 2006 - 17:57 #8
Der er ingen forskel, hvis man benyter IncludeTrailingBackslash så bliver IncludeTrailingPathDelimiter kaldt i stedet.

function IncludeTrailingBackslash(const S: string): string;
begin
  Result := IncludeTrailingPathDelimiter(S);
end;
Avatar billede snowball Novice
10. april 2006 - 18:20 #9
Oh well, de gør deres arbejde - det er vel det der er det vigtigste ;)
Avatar billede kroning Nybegynder
10. april 2006 - 18:38 #10
Jep :-)
Avatar billede psycosoft-funware Nybegynder
10. april 2006 - 19:21 #11
kroning kom med et svar der virkede og snowball kom med en løsning der var hurtigere... så jeg vil bede jer begge to om at lægge et svar :)

/FunteX! :-)
Avatar billede snowball Novice
10. april 2006 - 19:34 #12
:)
Avatar billede kroning Nybegynder
10. april 2006 - 21:03 #13
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester