Entwickler-Ecke
Dateizugriff - Dateien in ein Formular einfügen
FireFighter112 - Di 04.05.10 22:01
Titel: Dateien in ein Formular einfügen
Wie kann ich in einem Formular bei Klick auf einen Button, eine .exe (oder eine andere) Datei öffnen???
Schon einmal vielen Dank für die Antworten!!!
Narses - Di 04.05.10 22:09
Moin und :welcome: im Forum!
Such mal nach
SHELLEXECUTE, damit solltest du weiter kommen. :lupe: :les: :think: ;)
cu
Narses
Sybok Factor - Mi 05.05.10 13:39
... oder du schaust dir die TActionlist Komponente an und dort die Action TFileRun. (ist allerdings weniger lehrreich als der erste Weg).
Viele Grüße
Sybok
FireFighter112 - Mi 05.05.10 16:25
Danke schonmal...
Mit dem shellexecute versteh ich das iwie nicht so ganz! Ich möchte mit einem Klick auf einen Button eine Word-Datei aufrufen (die also nicht auf dem Formular anzeigen)! Aber was genau muss ich dazu schreiben???
FireFighter112
Xentar - Mi 05.05.10 16:57
Du hast ein Stichwort bekommen, wonach du bestimmt schon gesucht hast.
Wie sehn denn nun deine zugehörigen Versuche aus, bzw. was für eine Fehlermeldung erhälst du da?
FireFighter112 - Mi 05.05.10 17:18
Xentar hat folgendes geschrieben : |
Du hast ein Stichwort bekommen, wonach du bestimmt schon gesucht hast. |
Ich habe auf einer Seite folgendes gefunden:
ShellExecute(0, 'open', PChar(cExecute), nil, nil, SW_ShowNormal); Doch was muss ich daran verändern, damit ich die Datei "Text.doc" öffnen kann?
Moderiert von
Narses: Delphi-Tags hinzugefügt
Xentar - Mi 05.05.10 18:17
Klick mal auf ShellExecute, und drück F1, dann sollte die Hilfe aufgehen..
Dort wirst du dann lesen können, dass der Dateiname der dritte Parameter ist.
FireFighter112 - Mi 05.05.10 22:08
HILFEEEE!!!!
Ich versteh das nicht...
wenn ich F1 drücke, kommt dass ich die hilfe nicht anzeigen kann ider sowas
könnt ihr mir vielleicht sagen, wo ich was genau eingeben muss. Das wäre super nett :D
jaenicke - Mi 05.05.10 22:14
Dann hast du vermutlich noch eine Uraltversion von Delphi und Vista oder neuer. Du brauchst dann das entsprechende Update:
http://www.delphi-library.de/viewtopic.php?p=544403
Ich habe dir aber den Link zur Dokumentation gepostet, da steht ja alles drin. Und zudem wurde dir bereits gesagt, dass der dritte Parameter der zu öffnende Dateiname ist (natürlich inklusive Pfad)...
JayEff - Mi 05.05.10 22:18
FireFighter112 hat folgendes geschrieben : |
könnt ihr mir vielleicht sagen, wo ich was genau eingeben muss. Das wäre super nett :D |
Dabei lernste nix, das wär also nich super nett sondern super un-hilfreich.
Der Link erklärt schon alles, halt auf englisch. Wie jaenicke schon gesagt hat, der dritte Parameter ist der Dateiname+Pfad, den Rest kannst du lassen. Zu beachten ist, dass die Funktion PChars als Parameter will, keine Strings, darum der Cast (sprich: Typenumwandlung) von String zu PChar im von dir geposteten Code. (
PChar(cExecute)
Du kannst dir sicher denken, dass cExecute eine Variable vom Typ String ist.
elundril - Mi 05.05.10 22:20
ich denke wenn er bei delphi f1 drückt wenn er shellexecute markiert hat, wird sowieso nix kommen, denn die hilfe für diesen befehl steht in der WinApi-Hilfe drin, die bei der Delphi-Hilfe nicht dabei ist. Zumindest bei D7 nicht.
lg elundril
Martok - Mi 05.05.10 22:28
elundril hat folgendes geschrieben : |
ich denke wenn er bei delphi f1 drückt wenn er shellexecute markiert hat, wird sowieso nix kommen, denn die hilfe für diesen befehl steht in der WinApi-Hilfe drin, die bei der Delphi-Hilfe nicht dabei ist. Zumindest bei D7 nicht. |
Oh doch. Nur will OpenHelp da nicht, und deswegen findet der die nicht automatisch. In dem dann auftauchenden Index einfach mal ShellExecute eingeben, da stehts dann wirklich ;)
Oder eben gleich ins MSDN, das ist dann auch aktueller als jede lokale Version.
jaenicke - Mi 05.05.10 22:28
Bei Delphi 7 geht vieles nicht, das ist halt so, ist nun einmal fast 10 Jahre alt. Also was erwartest du? :lol:
Bei Delphi 2006 geht das natürlich, siehe Anhang, das kommt heraus beim Druck auf F1...
FireFighter112 - Di 11.05.10 22:08
Ich lerne seid vllt 2 monaten delphi, das meiste selbst beigebracht und ich versteh echt überhauptnicht wo ich dass mit dem shellexecute hinschreiben muss...
Delphi-Quelltext
1: 2: 3: 4:
| ShellExecute(0, 'open', PChar(cExecute), nil, nil, SW_ShowNormal); -------------------------------^---------------------------------------------------- -------------------------------|---------------------------------------------------- -------------------Muss dahin dann "Text.doc"???------------------------------------ |
Moderiert von
Narses: Delphi-Tags hinzugefügt
jaenicke - Di 11.05.10 22:18
FireFighter112 hat folgendes geschrieben : |
Muss dahin dann "Text.doc"??? |
Ohne, dass du sowas einfach ausprobierst wirst du beim Programmieren nicht weit kommen...
Statt cExecute muss der Pfad plus der Dateiname der Datei hin. Ich habe bisher noch nichts gesehen was du in der Richtung probiert hast (seid dazu etwas geschrieben wurde), wie sollen wir da dann helfen?
Probier es und wenn es nicht klappt zeig doch einfach was du versucht hast...
ALF - Di 11.05.10 22:33
Dein Topic heist aber "Dateien in ein Formular einfügen"!!! ist dann aber auch nicht richtig!
Du willst aber Office öffnen mit einer *.doc Datei wenn ich es richtig verstehe!?
PChar(cExecute), bedeutet das dort die ausführbare Datei rein muss!
und Nil, Nil sind parameter die Du der ausführbaren Datei(exe) mit übergibst, damit sie evtl weiss, was sie machen soll!
als kleine Hilfe :wink:
Gruss Alf
FireFighter112 - Mi 12.05.10 15:14
Also wäre das, wenn es im selben Ordner ist:
Delphi-Quelltext
1:
| ShellExecute(0, 'open', PChar(Text.txt), nil, nil, SW_ShowMinimized); |
Ich habe bis jetzt sehr viel ausprobiert, doch ich wusste nicht, wo genau ich das hinschreiben muss.
Muss ich das jetzt in die Procedure von einem Button schreiben oder wohin?
In der Procedure, kam bis jetzt immer eine Fahlermeldung, dass der Befehl unbekannt ist...
LG FireFighter112
Moderiert von
Narses: Delphi-Tags hinzugefügt
ALF - Mi 12.05.10 15:29
Das ist aber jetzt nicht Dein ernst!
Lesen und verstehen sind zwar unterschiedliche Dinge aber, Lesen ist anscheinend nicht Deine Stärke!
Was willst Du den nun!!
Eine txt Datei in Dein Formular einfügen zum ansehen/bearbeiten
oder
ein externes Prog z.B. (edit.exe starten) und Deine txt Datei diesem Prog (edit.exe) übergeben!!
Gruss Alf
elundril - Mi 12.05.10 16:01
Ok, das wird mir jetzt zu doof, ich liefere statt hinweise jetzt ne copy-paste-lösung für alle die anscheinend du faul zum denken sind. Viel Spass in der Arbeitslosigkeit dann!
Also: Bei
uses muss du dazuschreiben: ShellApi
dann bei dem Button oder wo du hast die textdatei öffnen willst schreibst du hin:
Delphi-Quelltext
1:
| ShellExecute(0, PChar('open'), PChar(ExtractFileDir(Application.Exename)+ '\Text.txt'), nil, nil, SW_ShowNormal); |
lg elundril
Dude566 - Mi 12.05.10 16:05
Kommt es mir nur so vor, oder wird diese Frage mindestens einmal im Monat gestellt? :D
ALF - Mi 12.05.10 16:32
Och nööö, das nützt ihm nichts @elundril, mit Fehlern :wink:
Gruss Alf
elundril - Mi 12.05.10 16:38
Tschuldigung, die Klammern fehlen natürlich und der schrägstrich.
ALF - Mi 12.05.10 16:48
Sorry @elundril, ich will nicht nerven aber, Application.Exename, wird ihm auch nichts nutzen :wink:
Schreib 'Notepad.exe' z.B. mit rein, das wird ihm besser helfen.
Hoffentlich weis er aber auch, das er den Pfad der txt Datei richtig angeben muss, sonst kommt die nächste Frage :lol:
Gruss ALf
jaenicke - Mi 12.05.10 16:53
Dann kommt sicher bald die entsprechende Frage. Vielleicht sollte man auch noch dazusagen, dass man den Button mit der linken Maustaste anklicken muss, damit das Ereignis dahinter ausgelöst wird.
Jaja, da merkt man was passiert, wenn man automatische Updates deaktiviert (also für die brain.exe meine ich).
Sorry, aber wenn man sich so anstellt... :roll:
Ich unterstreiche mal noch einmal diesen Post...
FireFighter112 - Mi 12.05.10 17:04
Mir ist schon klar, dass ich den button mit der linken Maustaste anklicken muss... nur wenn ich frage, was ich hinschreiben muss, um eine Datei zu öffnen.. sollte man mir schon sagen, dass ich bei uses ShellApi eingeben muss!! sonst kann ich lange probieren.
Noch eine letzte kleine Frage, wie gebe ich den Pfad der Datei an???
ALF - Mi 12.05.10 17:13
lol, aber Du bist Anfänger, ansonsten hilft auch mal lesen, nicht nur Fragen
Dort wo @elundril den '\text.txt' gesetzt hat
Gruss Alf
jaenicke - Mi 12.05.10 17:13
FireFighter112 hat folgendes geschrieben : |
sollte man mir schon sagen, dass ich bei uses ShellApi eingeben muss!! |
Das steht in der Doku und auch in den diversen Suchergebnissen drin.
FireFighter112 hat folgendes geschrieben : |
Noch eine letzte kleine Frage, wie gebe ich den Pfad der Datei an??? |
Der Pfad der Exe selbst steht ja dabei in dem Beispiel (ExtractFileDir(Application.Exename)). Und wenn du da einen anderen haben willst, dann kannst du den z.B. direkt vor den Namen der Textdatei in den String schreiben oder als Variable, eben statt ExtractFileDir(Application.Exename). Ganz wie du möchtest.
elundril - Mi 12.05.10 20:12
ALF hat folgendes geschrieben : |
Sorry @elundril, ich will nicht nerven aber, Application.Exename, wird ihm auch nichts nutzen :wink:
Schreib 'Notepad.exe' z.B. mit rein, das wird ihm besser helfen. |
Das Notepad.exe hat im ShellExecute nix zu suchen wenn er eigentlich nur die "Text.txt" im Programmverzeichnis öffnen will. Und da braucht er das ExtractFileDir(Application.Exename), aus dem Grund weil das Ausführungsverzeichnis sich vom Programmverzeichnis unterscheiden kann und ohne Pfad, wird das Ausführungsverzeichnis genommen. Jetzt kann es natürlich zu Problemen kommen, da es im ausführungsverzeichnis kein "Text.txt" gibt, oder wenn es so eine Datei gibt, es vielleicht die falsche ist. ;)
lg elundril
ALF - Mi 12.05.10 20:36
@elundril
FireFighter112 hat folgendes geschrieben : |
Ich möchte mit einem Klick auf einen Button eine Word-Datei aufrufen (die also nicht auf dem Formular anzeigen)! |
oder hab ich da was falsch verstanden? wenn nicht mit der office.exe über shellexecute z.B.
Gruss Alf
elundril - Mi 12.05.10 20:43
FireFighter112 hat folgendes geschrieben : |
Also wäre das, wenn es im selben Ordner ist: |
ja, weil bezog mich dann auf diesen Post ;)
wenn er eine bestimmte datei richtig mit word.exe aufrufen will, müsste er statt der ExtractFileDir(Application.Exename) mal den pfad von word.exe finden und einfügen und dann statt dem ersten nil den pfad für die zu öffnende datei als PChar mitgeben. das erste nil wäre nämlich der erste parameter für word.exe. ;)
lg elundril
ALF - Mi 12.05.10 20:53
Ok, sollte er selbst entscheiden was er nun wirklich will 8)
Gruss Alf
Andreas L. - Do 13.05.10 09:57
FireFighter112 hat folgendes geschrieben : |
Also wäre das, wenn es im selben Ordner ist:
Delphi-Quelltext 1:
| ShellExecute(0, 'open', PChar(Text.txt), nil, nil, SW_ShowMinimized); |
|
1. Werden Strings mit einem ' eingeleitet und wieder mir einem ' abgeschlossen:
2. Musst du einen Pfad angeben. Wenn die Datei im selben Ordner wie die EXE liegt: ParamStr(0) ansonsten schau dir mal TOpenDialog an
Delphi-Quelltext
1:
| ShellExecute(Handle, 'open', PChar(ExtractFilePath(ParamStr(0)) + 'Text.txt'), nil, nil, SW_SHOW); |
EDIT: Mist, 2te Seite übersehen. Ich geh wieder ins Bett....
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!