Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Dateien verknüpfen (c++)

Ich habe mal das Forum hier durchsucht nach einfachen Befehlen, in C++ ein Programm auf Befehl (nach meinen Vorstellungen durch die simple "ButtonClick"-Methode) zu öffnen. Habe dann diesen Eintrag hier gefunden und danach auch meinen Code geändert. Also

{
system("\\info\\info.exe");
}

Aber, wenn ich das Hauptprogramm ausführe und dann das Nebenprogramm starten will, erscheint für den Bruchteil einer Sekunde ein schwarzes MS-DOS Fenster und dann verschwindet es wieder.

Was ist an dem Befehl noch zu ändern ?

Hab auch mal für Befehle nach C gesucht und diesen gefunden, aber den kann ich irgendwie nicht in C++ übertragen  :-\

« Letzte Änderung: 14.01.05, 22:35:01 von Der olle Schwoebel »

Antworten zu Dateien verknüpfen (c++):

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

*nachobenschiebinderhoffnungdasseinerder34
lookerdochneahnunghabenunddiesdannauchverraten*

Ich weiss nicht: Diese überflüssige Grafik unter jedem Posting erhöht die Augenkrebsgefahr derart, dass ich gar nicht das darüberstehende Posting lesen mag...  :P

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Nagut, auch auf Rücksicht auf die analogen surfer hab ich das Gif mal rausgenommen

system() ist ein C Befehl - wie kommst Du darauf, dass daran irgendetwas C++ spezifisch ist? Aber an sonsten sollte das schon der richtige Befehl sein.

Dein Problem ist wahrscheinlich, dass info.exe ein Programm ist, dass nur etwas ausgibt und sich dann wieder beendet. Was würdest Du denn in so einem Fall für eine Reaktion erwarten?

Und Das hier hat, soweit ich das sehen kann, mit dem Aufrufen von Programmen gar nix zu tun...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Zitat
9.2 Öffnen und Schließen von Dateien

Natürlich kann man von einem C Programm aus auch auf jede beliebige Datei zugreifen. Für diese Zugriffe muß die Datei geöffnet und nach Abschluß der Dateiarbeiten wieder geschlossen werden. Zur Identifizierung einer Datei dient dabei ein sogenannter Filepointer, der beim erfolgreichen Öffnen der Datei als Wert der Öffnungsfunktion zurückgegeben wird.

Der Filepointer ist ein Zeiger auf eine Struktur, die Angaben über den Bearbeitungszustand der Datei enthält. Die Einzelheiten dieser Struktur, die in stdio.h definiert ist, sind für uns nicht wichtig. Die Vereinbarung:

FILE  *fp, *fopen();

definiert fp als einen Zeiger auf die Struktur FILE und fopen() als eine Funktion, die ein solches Resultat (einen Pointer auf eine Struktur FILE) liefert.

Eine Datei wird mittels

fp = fopen(name,mode);

geöffnet. name ist der Dateiname (genauer Pfadname, Achtung Sonderbedeutung von Backslash in C!) als Zeichenkette und mode kann die Werte "r" (Lesezugriff), "w" (Schreibzugriff) und "a" (anfügender Schreibzugriff) haben. Nach erfolgreichem Öffnen der Datei wird von fopen ein Zeiger auf eine Dateistruktur zurückgeliefert, ansonsten der Wert NULL (wie EOF in stdio.h definiert). War die Datei nicht schon vorhanden, so wird sie angelegt, allerdings nur bei Schreibzugriff (Das Lesen von nicht existierenden Dateien ist natürlich ein Fehler).

Eine geöffnete Datei wird bei Programmende oder -abbruch mit exit() automatisch geschlossen. Dies ist insbesondere bei Schreibzugriffen wichtig, da nur dann der Restpuffer auch wirklich in die Datei gelangt. Generell sollte man aber jede nicht mehr benötigte Datei mit

fclose(fp);

wieder schließen. fp muß dabei ein vorher von fopen() zurückgebener Filepointer sein.

Die Namen stdin, stdout und stderr sind vordefinierte konstante Filepointer, die man ohne Öffnen der zugehörigen Dateien verwenden kann, da das Öffnen beim Programmstart automatisch besorgt wird. Es gilt folgende Zuordnung:

stdin   /* Standardeingabe (Tastatur) Umlenkung möglich */
stdout  /* Standardausgabe (Bildschirm) Umlenkung möglich */
stderr  /* Fehlerausgabe (Bildschirm) keine Umlenkung */

DAS hatte ich eigentlich gemeint.

Naja, wenn ich das Programm normal starte (info.exe), dann schließt sich das erst, wenn ich auf "Beenden" klicke und so sollte das auch sein. Wie kann man denn das erreichen ?

Hast Du den Text, den Du da zitierst, einmal gelesen? Wo steht denn da was von ausführbaren Programmen? Irgendwie geht es da nur darum, Dateien zu öffnen und in diese zu schreiben oder aus ihnen zu lesen...

Und zu Deinem Problem: Wenn Du auf der Kommandozeile einfach mal "\info\info.exe" eingibst, was passiert dann?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich hab mal das eingegeben, da hat der Borland Builder nur die Fehlermeldung gebracht, dass er Project1.ilc nicht erstellen konnte.

Außerdem hat ein einfaches \ doch eine Art Sonderstellen ung C++ und gibt keine Verknüpfung aus....

....Bitte...

Pass mal auf:

Stell dich mal dumm (ok, sollte nicht so schwer sein) lies deine Posts in diesem Thread, und versuche, allein aus dem was du geschrieben hast, herauszufinden, was du willst. Das wird 100% nicht klappen -_-

Also entweder du schreibst es einfach nicht hin was du willst, sondern denkst dir die wichtigen Teile, oder du benutzt für irgendwelche Dinge die völlig falschen Begriffe, was auch dazu führt, dass dir nie jemand helfen können wird...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Nagut, dann versuche ich es noch einmal zu erklären :

Ich habe in mein Programm ein Hauptmenü eingebaut und unter "Hilfe" habe ich dann einen Verknüpfung Namens "Info" eingefügt.

Dementsprechend habe ich ein weiteres Programm erstellt, das im Untermenü info liegt und "info.exe" heißt. Dieses soll sich beim klicken auf die Verknüpfung im Hauptmenü öffnen und sich erst DANN wieder schließen, wenn der Benutzer den Knopf "Beenden" klickt. Nun suche ich nach dem richtigen Befehl dafür, denn mit system () öffnet er zwar irgendwas, aber das scheint dafür nicht der richige Befehl zu sein.

Wie kann ich jetzt erreichen, dass der eine ganz normale Verknüpfung erstellt, wie auf dem Windows Desktop oder im Startmenü ?

Das Wort Verknüpfung macht in diesem Zusammenhang einfach keinen Sinn. Es sei denn, Du möchtest durch den Druck auf deinen Info Knopf auf Deinem Desktop eine Verknüpfung erstellen...

Du sagst aber, dass Du ein Programm ausführen möchtest. Das kannst Du ja auch gerne machen, die Funktion system ist ja auch gar nicht so ungeeignet dafür. Du versuchst das Programm mit der Pfadangabe \info\info.exe auszuführen und da das nicht klappt habe ich Dir geraten, doch einfach mal \info\info.exe in der Kommandozeile einzugeben. Darauf war Deine Antwort:

Zitat
Ich hab mal das eingegeben, da hat der Borland Builder nur die Fehlermeldung gebracht, dass er Project1.ilc nicht erstellen konnte.

Das ist einfach nur grober Unfug und ich frage mich, wieviele Interpretationen es für das Wort Kommandozeile wohl geben mag ???

Hallo Oller Schwöbel,

ich gehe mal davon aus, daß Dein Programm "Info.exe" keine Kommandozeilenapllikation (will sagen läuft im DOS Fenster), sondern ein nettes Windowsprogramm ist. Du erwartest dann also, daß "info.exe" hochkommt und nett sein Fenster zeigt.

Die Funktion "system()" startet den Kommandozeileninterpreter, der einfach nur das, was der Funktion übergeben worden ist, ausführt. Wenn er das Programm, welches er ausführen soll nicht findet, dann siehst Du kurz die DOS Box aufflackern und das war es auch schon. Also gehe ich davon aus, daß Dein "Info.exe" nicht gefunden wurde. Die Funktion "system()" liefert Dir auch den einen oder anderen Fehlercode zurück, den Dein Hauptprogramm einfach mal prüfen sollte...
Es gibt noch weitere nette Funktionen, mit denen Du weitere Programme ausführenlassen kannst. Beispielsweise "CreateProcess()", was zugegebenermaßen deutlich mehr Parameter hat und einiges an Deklarationen benötigt.
Ich beziehe mich hier übrigens auf MS VS C++.

Beste Grüße

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Danke ! Werde die Funktion mal ausprobieren !   :)


« Sortieren von Daten in ExcelDev-Cpp und anderer Compiler???? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...

C++
C++ ist eine von der ISO standardisierte Programmiersprache und eine erweiterte Form von C zur objektorientierten, generischen und prozeduralen Programmierung. Weitestgeh...