![]() |
Datei öffnen
Hallo leute,
Folgendes, Ich habe ein kleines Programm bei dem man per Klick mit einem SaveDialog den inhalt von zwei Edit Feldern speichern kann. Mit einem Klick auf einen OpenDialog kann man diese Datei dann wieder öffnen, und die Daten werden wieder ins Edit Feld eingetragen. Das funktioniert auch gut, nur wie mache ich das, wenn der Benutzer die gespeicherte Datei in mein Programm zieht, über "öffnen mit" öffnet, oder doppelklick? Bei "öffnen mit" wird mein Programm zwar geöffnet, aber es geschieht nichts. Hier mein code: Sry wenn das hier schon öfters gefragt wurde, aber ich konnte bisher noch nichts finden was mir geholfen hat.
Delphi-Quellcode:
Ich hoffe ihr könnt mir helfen :thumb:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, StdCtrls; type TForm1 = class(TForm) OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); var Ini: TIniFile; begin if SaveDialog1.Execute then begin Ini:=TIniFile.Create(SaveDialog1.FileName); Ini.WriteString('edtxt','name',edit1.Text); Ini.WriteString('edtxt','nick',edit2.Text); Ini.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var Ini: TIniFile; begin if OpenDialog1.Execute then begin Ini:=TIniFile.Create(OpenDialog1.FileName); Edit1.Text:=Ini.ReadString('edtxt','name',''); Edit2.Text:=Ini.ReadString('edtxt','nick',''); Ini.Free; end; end; end. mfg headi |
Re: Datei öffnen
Beim Doppelklick wird der Dateiname der geklickten Datei als Parameter an deine exe übergeben.
Versuchs mal so: On Create (oder OnShow :gruebel: )
Delphi-Quellcode:
Edit: Delphi Tags vergessen
var
Ini: TIniFile; begin ini := TIniFile.Create(ParamStr(0)); Edit1.Text:=Ini.ReadString('edtxt','name',''); Edit2.Text:=Ini.ReadString('edtxt','nick',''); Ini.Free; end; |
Re: Datei öffnen
Das geht aber nur wenn im Dateinamen keine Leerzeichen angegeben werden.
Um den kompletten Parameter zu erhalten, musst du das so machen:
Delphi-Quellcode:
var
i:integer; filename:string; begin filename:=''; i:=1; while paramstr(i)<>'' do begin filename:=filename+paramstr(i)+' '; i:=i+1; end; |
Re: Datei öffnen
Ich habe mir mal ne Procedure geschrieben. Du musst noch oben bei uses "ShellApi" eintragen!
Delphi-Quellcode:
procedure TMainForm.ExecuteProgramm(const PFileName: string);
var SEInfo: TShellExecuteInfo; ExitCode: DWORD; ExecuteFile, ParamString, StartInString: string; begin ExecuteFile:=PFileName; FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpFile := PChar(ExecuteFile); nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@SEInfo) then begin repeat Application.ProcessMessages; GetExitCodeProcess(SEInfo.hProcess, ExitCode); until (ExitCode <> STILL_ACTIVE) or Application.Terminated; end else begin Application.MessageBox('Fehler beim Starten des Programms', 'Programm Starten', mb_OK+mb_IconError); end; end; |
Re: Datei öffnen
@Rastaman:
erst einmal danke, aber leider funktioniert das weder bei "on create" noch bei "on show"! Ich hab auch nochmals alles überprüft und es sollte so stimmen. Aber irgendwie gehts halt einfach nicht :lol: So hab jetzt alles wirklich nochmals durchgecheckt, der Fehler bei deinem Code ist ganz einfach, Es heisst:
Delphi-Quellcode:
und nicht
ParamStr(1)
Delphi-Quellcode:
vielen dank!!
ParamStr(0)
@Ichbins: vielen dank, ich denke mal das ist genau das was ich gesucht habe!! :thumb: @robinWie: auch dir vielen dank! Aber wo kommt da mein code dann hin? Also was passieren soll damit? Schau da bei deinem code irgendwie nicht so durch... :cry: mfg headi EDIT: @ichbins: Ich habe den code von Rastaman nochmals auf herz und nieren getested, und muss sagen, der geht sowohl auch mit leerzeichen im dateinamen :P Interessant wäre nur mal zu wissen wies geht wenn man die datei auf die Form zieht, also während der laufzeit... :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz