Otwieranie pliku z danej lokalizacji (spacje w nazwie folderu)

0
procedure TForm1.Button1Click(Sender: TObject);
var
             sciezka : String;
	a : AnsiString;
	b : PAnsiChar;
begin
  SaveDialog1.FileName := Edit1.Text;
  if SaveDialog1.Execute then
  Memo2.Lines.SaveToFile(SaveDialog1.FileName);
  sciezka:=SaveDialog1.FileName;
  a := sciezka;
  b := PAnsiChar(a);
  ShellExecute(Handle,'open',  PChar('notepad.exe') , b ,nil,SW_SHOWNORMAL);

end; 

Jak widać powyżej program dokonuje zapisu Memo2 do pewnego pliku w wybranej lokalizacji, następnie otwiera ten plik w notatniku.
Pod Win7 jest wszystko OK, natomiast pod XP, w momencie kiedy zapiszemy plik w lokalizacji w której znajduje się spacja w nazwie folderu, wyskakuje informacja, że nieodnaleziono pliku w danej lokalizacji i wyświetla się lokalizacja do miejsca w którym znajduje się spacja.

0

U mnie pod XP działa tak jak powinno, nawet gdy folder zawiera spacje i polskie litery.

PS. Kombinacje ze ścieżką są zbyteczne. Wystarczy od razu wpisać:

ShellExecute(Handle, 'open',  PChar('notepad.exe'), PAnsiChar(SaveDialog1.FileName) ,nil, SW_SHOWNORMAL);
0

PChar('wordpad.exe'), bo później zmieniłem i fakt notatnik działa, ale WordPad nie otwiera, pod win7 też się nie otwiera. Później zmieniłem notatnik na wordpad i dlatego to nieporozumienie.
Tak więc co zmienić, aby otwierało w WordPadzie nawet jak są spacje.

0

Jeżeli parametr dla programu Wordpad.exe (w tym przypadku jest to nazwa pliku do otwarcia) zawiera spację, to trzeba go umieścić w cudzysłowie

Tak na pewno zadziała:

ShellExecute(Handle, 'open',  PChar('wordpad.exe'), PAnsiChar('"' + SaveDialog1.FileName + '"') ,nil, SW_SHOWNORMAL);
0

Teraz śmiga. Wielkie dzięki.

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