Aktuelle Zeit: 18.08.2019 17:28

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit Libre Office und RunProgram
BeitragVerfasst: 11.08.2019 23:00 
Offline

Registriert: 06.03.2019 21:52
Hallo,

wahrscheinlich sehe ich mal wieder vor lauter Wald die Bäume nicht mehr ...

Folgendes Problem: Mein Proggi erstellt eine CSV-Datei, alle Werte semicolongetrennt, alles einfacher Text, keine Sonderzeichen, keine Umlaute.

Dann soll die Datei von Libreoffice geöffnet werden, das mache ich so:
Code:
err = RunProgram(Chr(34)+Tabellenkalkulation$+Chr(34), Chr(34)+csvfile$+Chr(34), Chr(34)+homedir$+Chr(34), #PB_Program_Wait) 

LibreOffice startet, zeigt ein kleines Fenster, wo man einstellen könnte, ob die Daten mit Semikolon, Komma o. ä. getrennt sind. Hier klicke ich OK und dann - nix mehr.

Mein Proggi wartet wegen "#PB_Program_Wait", dass LO beendet wird, aber LO kann nicht beendet werden, weil kein Fenster vorhanden. Ohne "#PB_Program_Wait" funktioniert das einwandfrei, es wäre aber für den weiteren Progablauf ungünstig, wenn mein Proggi nicht auf LO warten würde. Hat jemand eine Idee, wie man das doch mit "#PB_Program_Wait" hinbekommt?

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit Libre Office und RunProgram
BeitragVerfasst: 11.08.2019 23:15 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
Versuche es mal so:
Code:
err = RunProgram(Tabellenkalkulation$, Chr(34)+csvfile$+Chr(34), homedir$, #PB_Program_Wait)
Die Pfadangaben sollten nur in Anführungszeichen stehen, wenn sie als Parameter übergeben werden, weil nur dort die Gefahr besteht, dass sie falsch interpretiert werden.

_________________
Bild
Warum OpenSource eine Lizenz haben sollte
PureBasic-CodeArchiv-Rebirth: Git-Repository / Download -- Jede Hilfe ist willkommen!
Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit Libre Office und RunProgram
BeitragVerfasst: 12.08.2019 17:47 
Offline

Registriert: 06.03.2019 21:52
Vielen Dank für Deinen Beitrag, hat aber das Problem nicht lösen können.
Die Variablen Tabellenkalkulation$, csvfile$ und homedir$ enthalten Pfadangaben, die theoretisch auch Leerzeichen enthalten könnten. Deswegen gehe ich davon aus, dass ich nicht auf die chr(34) verzichten kann. Andererseits funktioniert es nach PC-Start genau 1 mal (auch mit Chr(34)), beim zweiten und jedem weiteren Mal kommt der Fehler wie beschrieben. Leider zeigt LO dann auch kein Icon in der Taskleiste, um damit irgendwie ein Fenster nach vorne bringen zu können.

Übrigens: Wenn ich das vergeblich wartende Programm per Taskmanager abschieße, erst dann öffnet sich LO mit der geladenen CSV-Datei.

Habe gerade eine neue Fährte aufgenommen, nämlich den LO-Parameter "--infilter". Wenn ich das soweit richtig verstanden habe, kann man damit definieren, welche Spalten welches Datenformat haben. Da muss man sich erst mal durchwurschteln. Vielleicht hat da schon jemand Erfahrungen und kann helfen?

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit Libre Office und RunProgram
BeitragVerfasst: 12.08.2019 19:11 
Offline

Registriert: 26.04.2019 10:31
Wohnort: Mühldorf am Inn
Schönen Abend,
ich hab auch immer Probleme mit RunProgram, manchmal tut's was es soll und dann wieder nicht...
Versuch doch mal den kompletten String in eine batch Datei zu schreiben und anschliessend die batch Datei mit RunProgram zu starten.
Bei mir funktioniert das, wobei es nicht die eleganteste Lösung ist.

Schöne Grüsse
Kurt

_________________
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit Libre Office und RunProgram
BeitragVerfasst: 12.08.2019 19:20 
Offline

Registriert: 29.05.2010 20:55
Dieser Code funktioniert bei mir Problemlos.

LibreOffice startet, zeigt ein kleines Fenster, wo man einstellen könnte, ob die Daten mit Semikolon, Komma o. ä. getrennt sind. Hier klicke ich OK und dann öffnet sich LO. Und wenn ich LO wieder schließe endet das Programm.

Code:
Tabellenkalkulation$ = "C:\Program Files\LibreOffice\program\scalc.exe"
csvfile$ = "H:\tmp\Test Datei.csv"  ;Hier Pfad anpassen
homedir$ = GetPathPart(csvfile$)

If CreateFile(0, csvfile$)
 
  WriteString(0, "Test;Foo;Bar" + #CRLF$ +
                 "1;2;3" + #CRLF$ +
                 "4;5;6" + #CRLF$ +
                 "7;8;9")
 
  CloseFile(0)
 
  err = RunProgram(Tabellenkalkulation$, Chr(34)+csvfile$+Chr(34), Chr(34)+homedir$+Chr(34), #PB_Program_Wait)

Else
  Debug "Konnte Datei nicht erstellen."
EndIf


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit Libre Office und RunProgram
BeitragVerfasst: 12.08.2019 20:19 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
bin_neu_hier hat geschrieben:
Die Variablen Tabellenkalkulation$, csvfile$ und homedir$ enthalten Pfadangaben, die theoretisch auch Leerzeichen enthalten könnten. Deswegen gehe ich davon aus, dass ich nicht auf die chr(34) verzichten kann.
Das Problem mit den Leerzeichen existiert nur bei den Parametern.

bin_neu_hier hat geschrieben:
Habe gerade eine neue Fährte aufgenommen, nämlich den LO-Parameter "--infilter". Wenn ich das soweit richtig verstanden habe, kann man damit definieren, welche Spalten welches Datenformat haben. Da muss man sich erst mal durchwurschteln. Vielleicht hat da schon jemand Erfahrungen und kann helfen?
Code:
err = RunProgram(Tabellenkalkulation$, ~"--infilter=\"csv:59\" \"" + csvfile$ + ~"\"", homedir$, #PB_Program_Wait)
Nach dem "csv:" wird das Feldtrennzeichen (ASCII "59" = Semikolon) angegeben.

_________________
Bild
Warum OpenSource eine Lizenz haben sollte
PureBasic-CodeArchiv-Rebirth: Git-Repository / Download -- Jede Hilfe ist willkommen!
Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Gelöst: Problem mit Libre Office und RunProgram
BeitragVerfasst: 13.08.2019 23:15 
Offline

Registriert: 06.03.2019 21:52
Hallo Allerseits!

Das Problem, dass LO beim Import von CSV-Dateien wegen
Code:
 Runprogramm ... #PB_Program_Wait

den Dienst verweigert, konnte ich so lösen:
Code:
RunProgram(Chr(34)+Tabellenkalkulation$+Chr(34), infilter$ + " " + "-o "+Chr(34)+csvfile$+Chr(34), Chr(34)+GetPathPart(Tabellenkalkulation$)+Chr(34), #PB_Program_Wait)

wobei infilter$ den Parameter für den CSV-Import bereitstellt. Könnte zum Beispiel so aussehen:
Code:
 infilter$ = "--infilter="+Chr(34)+"csv:59/9,34,1,1,1/2/2/4/3/1/4/1/5/2/6/1/7/2/8/1,3072,true,false"+Chr(34)

Habe folgendes herausgefunden: Will man eine CSV-Datei öffnen, von der man den Aufbau kennt, erspart dieser Importfilter einiges an Nachbearbeitung in LO. In meinem Fall generiert ein Programm eine CSV-Datei (weil ich nicht weiß, wie man eine LO-Calc-Datei programmiert), deren Aufbau beispielsweise so aussieht:
1. Zeile Spaltenüberschriften
2. und folgende Zeilen sind alles Werte, und zwar in dieser Reihenfolge (Spalten, von links nach rechts): Text,Datum,Zahl,Text,Zahl,Text,Zahl

Dann müsste der Infilter-Parameter wie oben gezeigt aussehen, wobei die Werte folgendes bedeuten:
59/9 Trennung per Semikolon und/oder Tab
34 Trennung für Texte (z. B. Spaltenüberschriften aus Text müssen je Zelle in "" Gänsefüßchen eingeschlossen werden). Ist der jeweilige ASCII-Code für das betreffende Trennzeichen
1 (die erste 1 im Beispiel) steht für den Zeichensatz "Windows-1252/WinLatin 1 (Western)"
1 (die zweite) steht für die Zeilennummer, 1 = oberste Zeile in der Tabelle
dann folgen für jede Spalte von links nach rechts folgende Paare: Spaltennummer/Format (/S/F/S/F/S/F/... für weitere Spalten). Im Beispiel: 1/2 = erste Spalte, Wert = Text /2/4 (zweite Spalte, Wert = Datum DD.MM.YY), 3/1 = 3. Spalte, Format = Standard, usw.
zum Ende dann 3072 für Formate in deutsch(Deutschland) und 2 Bool-Werte, der erste steht für "Quoted field as text" = true, andernfalls false, der letzte für "Detect special numbers", wenn ja, dann true, sonst false.

Mit diesem Startparameter öffnet LO die Datei ohne Rückfragen, mein Proggi wartet brav ab (#PB_Program_Wait) und macht weiter, wenn LO beendet wurde.

Alle diese Einstellungen macht man auch, wenn man in LO eine CSV-Datei öffnet, dann erscheint ein Fenster, in dem genau diese Daten abgefragt werden (wenn nicht als infilter-Parameter schon gegeben). Das obige habe ich mir mehr oder weniger aus mehreren Quellen, zum Teil sehr alten, zusammengereimt und mag unvollständig oder fehlerhaft sein, für meine Zwecke funktioniert es. Vielleicht hilft es ja jemandem weiter.

Tirili & Hoppsassa

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye