Autor Beitrag
Scotch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: Sa 25.11.06 20:00 
Hallo,
ich habe eine kleine Texteditor erstellt.
Über die Schaltfläche Datei öffnen klappt das öffnen.
Jetzt möchte ich das, wenn ich auf eine Txt Datei klicke bzw. auf öffnen
mit, der Text in
meinem Programm nach dem Programmstart geladen und angezeigt wird.
Also wie frage ich den Dateinamen ab, von der angeklickten Datei?
gruß Ingo
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 25.11.06 20:16 
ausblenden Delphi-Quelltext
1:
DateiName := ExtractFileName(ParamStr(1));					

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: So 26.11.06 01:20 
Hallo GTA-Place,
danke für die Antwort.
Damit geht es.
Gruß Ingo
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 26.11.06 09:23 
Noch eine kurze Erklärung dazu (damit man noch was lernen kann ;-) ):

ParamStr() ließt die Parameter aus. Der 1. Parameter (0) ist der Pfad des eigenen Programmes. Nützlich, wenn man eine Datei in das selbe Verzeichnis wie das Programm speichern möchte. Der 2. Parameter (1) ist bei "Öffnen mit..." der Pfad der Datei, die man öffnen möchte.

ExtractFile(Path/Name/...) zieht aus dem Parameter den gewünschten Part, z.B. nur den Dateipfad oder nur den Dateiname.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: So 26.11.06 16:44 
Hallo GTA,
danke für die Erläuterung.

Etwas verstehe ich aber noch nicht.

Wenn ich meinem Programm mit ExtractFileName(ParamStr(1)); den Filenamen übergebe (was ja auch funktioniert)
Woher weiß mein Prog dann wo die Datei liegt.
Von meiner Logik her, müsste ich doch bei laden, den Wert so übergeben.
Memo1.Lines.LoadFromFile(ParamStr(1));
Damit das Prog weiß wo die Datie zu finden ist.
Aber es funktioniert ja auch mit ExtractFileName(ParamStr(1));
Aber warum?
Gruß Ingo
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 26.11.06 16:49 
Ich könnte mir vorstellen, dass bei einem solchen Programmstart das Verzeichnis des Programms auf das der Datei gesetzt wird, und daher die Datei auch ohne Pfadangabe gefunden wird.

Wenn die Datei geladen werden soll (z.B. in ein Memo), dann sollte man Paramstr(1) aber lieber unangetastet lassen. Zum Anzeigen des Dateinamens kann man dann immer noch ExtractFileName nehmen.

_________________
We are, we were and will not be.
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: So 26.11.06 17:06 
Hallo Gausi,
irgend wie versteh ich jetzt nur Bahnhof.
Wieso Dateinamen Anzeigen lasen.
Ich will den Datei Inhalt mit dem Editor bearbeiten.
Und das so wie bei Windows, wenn ich auf eine
txt Datei ein Doppelklick mache, wird der Win. Editor
gestartet und zeigt mir die Textdatei an.
Genau so will ich das ja auch in meinem Programm machen.
Und wenn ich den Paramstr(1) unangetaste lassen soll,
wie soll ich dann die Datei laden?

Gruß Ingo
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 26.11.06 17:14 
user profile iconScotch hat folgendes geschrieben:
Von meiner Logik her, müsste ich doch bei laden, den Wert so übergeben.
Memo1.Lines.LoadFromFile(ParamStr(1));

Was ich geschrieben habe, sollte eine Bestätigung deiner Logik sein und ein Erklärungsversuch, warum Memo1.Lines.LoadFromFile(ExtractFileName(ParamStr(1))); unter Umständen auch funktioniert. ;-)

_________________
We are, we were and will not be.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 26.11.06 18:07 
ausblenden Delphi-Quelltext
1:
Memo1.Lines.LoadFromFile(ExtractFileName(ParamStr(1)));					

Das geht nur, wenn die Textdatei im selben Verzeichnis wie das Programm liegt. Deshalb funktioniert es in diesem Fall - und nur in diesem Fall -, weil bei fehlender Pfad-Angabe der Pfad des eigenen Programmes genommen wird.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: So 26.11.06 18:40 
@Gausi
Ach so,
dann wird das Programm also aus der Sicht von Windows, aus dem Verzeichnis gestartet, wo sich die zu öffnende
Datei befindet (Virtual so zu sagen).
Aber dennoch ist es doch besser den Gesamten Phat zu in einer Variable abzulegen, damit
man nach einer Datei Änderung diese dann an richtiger Stelle zu Speichern.


@GTA

ich habe es mal getestet.
Ich habe mir ein neues Form aufgemacht und dort ein Label und ein Memo platziert.
In das OnCreate von Form1 habe ich den Code so eingegeben.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:= ExtractFileName(ParamStr(1));
if ParamStr(1)<>'' then
Memo1.Lines.LoadFromFile(ExtractFileName(ParamStr(1)))
else
Memo1.Clear;
end;

Wenn ich das Programm (exe File) auf dem Desktop speichere und dann aus einem andrem Laufwerk eine Text Datei über (öffnen mit...) und dann meine Exe vom Desktop auswähle wird der Text aus der Datei angezeigt.

Gruß Ingo
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 26.11.06 20:11 
Mh... OK. Ich habe es anders probiert: Ich habe die Textdatei auf die *.exe gezogen, was etwa "Öffnen mit..." entspricht - scheinbar aber doch nicht ganz ;-).

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Scotch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 6 Prof
BeitragVerfasst: So 26.11.06 22:06 
Auch eine Möglichkeit,
aber wenn ich das sagen darf, eine etwas komplizierte.
Bitte sag mir das du das nicht immer so machst wenn du eine
Datei mit einem bestimmten Programm öffnen willst :lol:
Gruß Ingo
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mo 27.11.06 16:59 
Nein, aber in dem Fall wäre "Öffnen mit..." komplizieter gewesen ;-).

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)