[C++]Nach String suchen, teilen und speichern

Ein weiteres Mal vielen Dank für die Hilfe !
Das Programm tut jetzt genau das, was ich wollte.

Es spuckt mir eine Textdatei aus, die Wertpaare enthält. Das Ding kann man in Excel öffnen und ein Diagramm daraus machen.

Kann man diesen zweiten Schritt (.txt-->Diagramm) noch irgendwie vereinfachen, ohne alles neu in VBA zu schreiben (von dem ich keinen blassen Schimmer habe) ? Wohl nicht, oder ?

Gruß
Seelenquell
 
Könnte man mit
C++:
system("Excel.exe datei.csv");
Excel starten und die Datei öffnen lassen ?
Würde zumindest einen Schritt sparen.
Wird Excel damit auf jedem System gefunden, oder muss man den ganzen Pfad angeben ? Notepad.exe findet er auch ohne Pfad.
Wie kann ich es anstellen, dass er anstatt datei.csv die tatsächlich erzeugt Ausgabedatei öffnet? Da müsste ich doch sowas ähnliches wie
C++:
system("Excel.exe szAusgabepfad");
machen. Das ist aber leider nicht richtig.

P.S.:
Hab das mit dem system-Befehl jetzt hinbekommen. Allerdings wird mit
C++:
string excel ="c:\\Programme\\Microsoft Office\\OFFICE11\\EXCEL.exe Ausgabedatei.csv";
const char* prog=excel.c_str();
system(prog);
//Wobei der Name der Ausgabedatei vorher per append an den String angehängt wurde
Excel nicht geöffnet.
 
Zuletzt bearbeitet:
Könnte man mit
C++:
system("Excel.exe datei.csv");
Excel starten und die Datei öffnen lassen ?
Würde zumindest einen Schritt sparen.
Wird Excel damit auf jedem System gefunden, oder muss man den ganzen Pfad angeben ? Notepad.exe findet er auch ohne Pfad.
Wie kann ich es anstellen, dass er anstatt datei.csv die tatsächlich erzeugt Ausgabedatei öffnet? Da müsste ich doch sowas ähnliches wie
C++:
system("Excel.exe szAusgabepfad");
machen. Das ist aber leider nicht richtig.

P.S.:
Hab das mit dem system-Befehl jetzt hinbekommen. Allerdings wird mit
C++:
string excel ="c:\\Programme\\Microsoft Office\\OFFICE11\\EXCEL.exe Ausgabedatei.csv";
const char* prog=excel.c_str();
system(prog);
//Wobei der Name der Ausgabedatei vorher per append an den String angehängt wurde
Excel nicht geöffnet.
Du mußt den Befehl der system Funktion genau so übergeben wie du es auch in der Kommandozeile tun würdest, da der Befehl vom Kommandozeileninterpreter ausgewertet wird. Zusätzlich mußt du natürlich noch die umgekehrten Schrägstriche entwerten.
C++:
string excel = "\"c:\\Programme\\Microsoft Office\\OFFICE11\\EXCEL.exe\" Ausgabedatei.csv";
So sollte es funktionieren. Allerdings wäre es evtl. besser einfach den start Befehl zu verwenden. Normalerweise sind .csv Dateien mit Excel als Standardprogramm verknüpft und somit würde "start Ausgabedatei.csv" Excel starten. Das Programm wird dann allerdings gleichzeitig ausgeführt, d.h. die system Funktion kehrt sofort zurück und dein Programm läuft weiter (und wird vermutlich gleich beendet).

Gruß
 
Okay, ich weiß jetzt woran es hängt.
Beim Befehl
C++:
system("start c:\\Dokumente und Einstellungen\\Administrator\\Eigene Dateien\\Programme\\Prog2\\Logfile.txt);
stört er sich wohl an den Leerzeichen. Es erscheint die Fehlermeldung in Windows "Die Datei c:\Dokumente konnte nicht geöffnet werden".
Wenn ich die Leerzeichen wegmache kommt "Die Datei c:\DokumenteundEinstellungen\Adminstrator\Eigene konnte nicht geöffnet werden".

Durch was muss ich die Leerzeichen ersetzen, damit system() richtig mit dem Pfad umgehen kann ?

Danke schonmal!
 
Habs immer noch nichts hinbekommen. Außerdem habe ich entdeckt, dass das Programm Eingabedateien mit Umlauten im Namen nicht öffnen will.

Noch jemand ne Idee ?
 
Okay, ich weiß jetzt woran es hängt.
Beim Befehl
C++:
system("start c:\\Dokumente und Einstellungen\\Administrator\\Eigene Dateien\\Programme\\Prog2\\Logfile.txt);
stört er sich wohl an den Leerzeichen. Es erscheint die Fehlermeldung in Windows "Die Datei c:\Dokumente konnte nicht geöffnet werden".
Wenn ich die Leerzeichen wegmache kommt "Die Datei c:\DokumenteundEinstellungen\Adminstrator\Eigene konnte nicht geöffnet werden".

Durch was muss ich die Leerzeichen ersetzen, damit system() richtig mit dem Pfad umgehen kann ?

Danke schonmal!
Durch nichts. Wie schon gesagt mußt du den Pfad innerhalb des Strings in Anführungszeichen setzen.
C++:
system("start \"c:\\Dokumente und Einstellungen\\Administrator\\Eigene Dateien\\Programme\\Prog2\\Logfile.txt\"");

Habs immer noch nichts hinbekommen. Außerdem habe ich entdeckt, dass das Programm Eingabedateien mit Umlauten im Namen nicht öffnen will.
Ja, Umlaute und andere Sonderzeichen sollte man möglichst vermeiden.

Gruß
 
Zurück