Blanks in Datei/Dateipfad

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Blanks in Datei/Dateipfad

Beitrag von JosefKoller »

Hallo,

ich benutze sumatraPDF als Anzeiger eingebunden auf ein Panel in meiner Application.

Code: Alles auswählen

 
var
  filename:string;
begin
 
  if OpenDialog1.Execute then
  begin
  filename:=OpenDialog1.FileName;
  with Process1 do
         begin
           CommandLine := 'SumatraPDF.exe ' +
                           '-reuse-instance -plugin '+
                           IntToStr(Panel1.Handle)+' '+
                           filename; //'inheritance.pdf';
           Execute;
         end;
  end;
end;     
 


Das funktioniert. Aber nur, wenn im Dateinamen und oder Dateipfad keine Blanks drinne sind.

Also "inheritance.pdf" funktiuoniert.
"C:\Personal 3\inheritance 2015.pdf" funktioniert nicht. Beim Aufruf des Readers wird schlicht der Dateiname -Pfad beim ersten Blank abgeschnitten.

Wie könnte man denn sowas hinbekommen?

Danke

Josef

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Blanks in Datei/Dateipfad

Beitrag von baumina »

Indem Du den Filename in Anführungszeichen setzt. QuotedStr oder was es da so gibt.
.

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: Blanks in Datei/Dateipfad

Beitrag von JosefKoller »

Hallo,

nein, daß funktioniert nicht. Beim ersten Blnak ist Schluß.

"Fehler beim Öffnen von C:\Program". Weier gehen würde es mit Program Data ....

Vielleicht noch eine Idee?

Josef

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Blanks in Datei/Dateipfad

Beitrag von baumina »

Code: Alles auswählen

 
CommandLine := 'SumatraPDF.exe ' +
               '-reuse-instance -plugin '+ 
               IntToStr(Panel1.Handle)+' '+
               QuotedStr(filename);

oder

Code: Alles auswählen

 
CommandLine := 'SumatraPDF.exe ' +
               '-reuse-instance -plugin '+ 
               IntToStr(Panel1.Handle)+' "'+
               filename + '"';


Das funktioniert nicht? Oder was genau funktioniert nicht?
.

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: Blanks in Datei/Dateipfad

Beitrag von JosefKoller »

Hallo,

mit quotedStr(filename) kommt nach dem Anzeigen der SumatraPDF-Oberfläche der genannte Fehlertext.

Aber die Version mit den "geschriebenen" Hochkommas funktioniert.

Code: Alles auswählen

 
CommandLine :=  'SumatraPDF.exe ' +
                           '-reuse-instance -plugin '+ IntToStr(Panel1.Handle)+
                           //QuotedStr(OpenDialog1.FileName);
                           ' "' + OpenDialog1.filename + '"';       
 


Danke.

Josef

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Blanks in Datei/Dateipfad

Beitrag von wp_xyz »

QuotedStr umgibt den String mit einfachen Anführungszeichen ('), das Betriebssystem will aber doppelte (").

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Blanks in Datei/Dateipfad

Beitrag von baumina »

Ich wusste jetzt nicht auswendig, obs auch einen Befehl, der doppelte Anführungszeichen bringt. Gibt's denn einen?
.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Blanks in Datei/Dateipfad

Beitrag von Michl »

baumina hat geschrieben:Ich wusste jetzt nicht auswendig, obs auch einen Befehl, der doppelte Anführungszeichen bringt. Gibt's denn einen?

Du könntest die Funktion aufrufen, die auch von QuotedStr aufgerufen wird:

Code: Alles auswählen

AnsiQuotedStr(FileName, '"')

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Blanks in Datei/Dateipfad

Beitrag von Socke »

Wenn du schon TProcess verwendest, kannst du auch die Eigenschaften Executable und Parameters verwenden. Das Quoting erledigt dann TProcess automatisch.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten