Jak napisać procedurę [???] która z łańcucha tekstowego np.
'abcde;C:\Program Files\program\sss.exe;gghghh' wydobędzie ścieżkę do pliku
Działanie funkcji:
- Najpierw funkcja znajduje :\
- Potem idzie do przodu od :\ aż znajdzie niedozwolony znak lub idzie do przodu o jeden znak (literę dysku) (dozwolone znaki to 'a'..'z','A'..'Z','0'..'9',' ','','-','_','.','(',')','[',']','~')
- Potem idzie do tyłu aż znajdzie niedozwolony znak
- Gdy na końcu wyciągniętej ścieżki będzie spacja to ją usuwa
- Gdy na końcu wyciągniętej ścieżki będą dwa znaki \ to jeden z nich usuwa
Próbowałem już to pisać na wszystkie sposoby ale jakoś mi nie wychodziło :(
Oto przykład mojej procedury niestety nie działa poprawnie :(
procedure TForm1.Button1Click(Sender: TObject);
var
A:String;
Start,Koniec:integer;
begin
A:='abcde;C:\Program Files\program\sss.exe;gghghh';
Koniec := Pos(':\', A);
Start := Koniec;
if Koniec > 0 then
begin
repeat
Dec(Start);
until (not (A[Start] in ['a'..'z','A'..'Z','0'..'9',' ','\','-','_','.',':','&','(',')','[',']']));
A := Copy(A, Koniec-1, Koniec+Start);
end;
Showmessage(A);
end;
Z góry dziękuję za pomoc :)