Problem z ShellExecute

0

mam CheckListBox'a w ktorym sa znalezione przez program sciezki do plikow mp3. np:

E:\backup\Marcin\mp3\12 Stones\Crash.mp3
E:\backup\Marcin\mp3\3 Doors down\Kryptonite.mp3

i teraz napisalem procedurke ktora otwiera program (podawany w opcjach. Standardowo winamp) i otwiera w nim wskazany plik. Wszystko jest dobrze dopoki w sciezce do pliku nie ma spacji: np: E:\test.mp3 a gdy one sa to niestety nie otwiera pliku a na playlist w winampie wyswietlaja sie dziwne rzeczy. np:

E:\backup\Marcin\mp3\3 Doors down\Kryptonite.mp3 to na Playlist wyswietli sie:

1.3
2.Doors
3.Down

  1. Kryptonite

Czy ktos ma pomysl co zrobic aby tak nie bylo??

0

Wydaje mi się że będziesz musiał wszystkie spacje w pętli pozamieniać na "_" , ale nie jestem pewien.

0

daj całość w cudzysłów

0

no zobacze z tymi '_'.

bo jest taka sprawa, ze jak np otwieralem iexplore to gdy byla w adresie spacja to sie nie otwieral plik : "C:\how to.html" ale jak zamienilem spacje na "%20" (bez " ) to sie otwieralo. a w winamp to nie dziala.;/

a moze jest jakis inny sposob?

nie wiem czy jest sens bo jak sobie dalem do ShowMessage() to mi wyswietlalo poprawnie cala nazwe ale sprobuje. thx

0

Karzdy program samodzielnie interpretuje parametry wywołania.
Ale myślę, ze z tymi "_" to będzie niewypał :/.
Morze z códzysłowami się uda :-/

0

Morze mokre jest.

Luknij do rejestru i zobacz jak explorer to robi:

"C:\Program Files\Winamp\winamp.exe" /ADD "%1"

0

Sam akurat mam ten sam problem - tzn nie działają mi ścieżki ze spacjami. Rozwiązaniem jest zastosowanie konwersji ścieżki 32 bitowej na 16 bitową. Czyli zamiast C:\Program Files\ dajemy C:\Progra~1. Służy do tego funkcja ExtractShortPathName. Przykład takiej funkcji:

procedure TForm1.konwersja_16_32;

var
sc, sciezka : string;

begin
sc := 'C:\Program Files\asd\asdasd asdd ad asd as\asdsadasdasas\Spearhead_Server_Setup.exe';

sciezka := ExtractShortPathName('sc');
end;

Da w efekcie wartość zmiennej sciezka:
C:\PROGRA~1\asd\ASDASD~1\ASDSAD~1\SPEARH~1.EXE

I wszystko działa, dlaczego tak jest nie mam pojęcia, sam jestem ciekaw.
Zapewne są inne ciekawsze sposoby na rozwiązanie tego problemy sam chetnie jakieś poznam.

Pozdrawiam

0
Adam Rz. napisał(a)

I wszystko działa, dlaczego tak jest nie mam pojęcia, sam jestem ciekaw.
Zapewne są inne ciekawsze sposoby na rozwiązanie tego problemy sam chetnie jakieś poznam.

Sam siebie cytuje bo przecież koledzy wyraznie wyjaśnili jak problem rozwiązać, tyle że nie załapałem w pierwszym momencie. Ale rzeczywiście dodanie cudzysłowy rozwiązuje problem :D.

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0