| Autor |
Beitrag |
Scotch
      
Beiträge: 101
Delphi 6 Prof
|
Verfasst: 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 25.11.06 20:16
Delphi-Quelltext 1:
| DateiName := ExtractFileName(ParamStr(1)); |
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Scotch 
      
Beiträge: 101
Delphi 6 Prof
|
Verfasst: So 26.11.06 01:20
Hallo GTA-Place,
danke für die Antwort.
Damit geht es.
Gruß Ingo
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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 
      
Beiträge: 101
Delphi 6 Prof
|
Verfasst: 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
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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 
      
Beiträge: 101
Delphi 6 Prof
|
Verfasst: 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
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 26.11.06 17:14
Scotch 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: So 26.11.06 18:07
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 
      
Beiträge: 101
Delphi 6 Prof
|
Verfasst: 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.
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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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 
      
Beiträge: 101
Delphi 6 Prof
|
Verfasst: 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
Gruß Ingo
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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)
|
|