Autor Beitrag
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 23.06.08 00:01 
HI,

ich hab mir n Prog geschrieben wo man die Sachen die man erstellt hat in ner Datei speichern kann. Die Datei hat n eigenen Typ von mir bekommen, also keinen dem Windows schon kennt.

Nun die Frage: Ist es möglich beim Doppelklick auf die Datei das Programm zu öffnen und gleichzeitig die Datei zu laden?
Wenn ja, wie geht das?

Schonma danke für die Hilfe.

MfG & Thx Bergmann.

Moderiert von user profile iconChristian S.: Überflüssige Zeilenumbrüche entfernt
Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Mo 23.06.2008 um 00:03
optikandy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Mo 23.06.08 00:25 
du kannst bei windows einstellen, dass sich dateien mit bestimmten endungen auch mit bestimmten programmen öffnen lassen...
z.B. ".doc" wird normal mit "microsoft word" geöffnet... du kannst es aber auch so einstellen, dass diese datei mit dem programm von open office geöffnet wird.

aber keine ahnung, wie der diese datei dann auch laden kann...
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 23.06.08 00:30 
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 23.06.08 00:46 
HI,

wie man das im Win-Explorer ändert weiß ich, aber ich wollte das gern mein Programm erledigen lassen, denn nich jeder User weiß wie das geht^^
Sowas wie Xentar verlinkt hat such ich...THX!
Jetzt muss ich nur noch in erfahrung bringen wie ich die Datei dann laden kann, wenn ich sie per Doppelklick geöffnet hab!

MfG & Thx Bergmann.

Moderiert von user profile iconNarses: überflüssige Zeilenumbrüche entfernt
optikandy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Mo 23.06.08 01:12 
bei dem link von xentar steht doch ganz unten, wie man eine solche datei öffnet.
so wie ich das sehe, musst du den Parameter im zusammenhang von assingfile beutzen.

musst das mal ausprobieren, habe kp ob das klappt
huuuuuh
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: Mo 23.06.08 07:41 
Der Dateiname und Pfad wird in dem fall als parameter der datei beim start mitgegeben. wie man das dann auffängt weiss ich allerdings nich
edit: hier dürftest du was finden www.tutorials.de/for...rogramm-oeffnen.html
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mo 23.06.08 12:34 
Dateiname wird als erster Parameter übergeben, also
ausblenden Delphi-Quelltext
1:
If ParamCount>0 then ShowMessage(ParamStr(1));					

(zeigt dir z.B. den Dateinamen an)

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 23.06.08 14:52 
user profile iconTimosch hat folgendes geschrieben:
(zeigt dir z.B. den Dateinamen an)


Das ist etwas irreführend. Der Dateiname des aufrufenden Programmes wird mit ParamStr (0) angezeigt. Wird dieses Programm mit einem oder mehreren Parametern aufgerufen, dann wäre der erst davon ParamStr (1)

_________________
Gruß
Hansa
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mo 23.06.08 14:54 
user profile iconhansa hat folgendes geschrieben:
user profile iconTimosch hat folgendes geschrieben:
(zeigt dir z.B. den Dateinamen an)


Das ist etwas irreführend. Der Dateiname des aufrufenden Programmes wird mit ParamStr (0) angezeigt. Wird dieses Programm mit einem oder mehreren Parametern aufgerufen, dann wäre der erst davon ParamStr (1)

Sag ich doch. Wenn über Öffnen mit eine Datei mit deinem Programm geöffnet wird, steht der Name dieser Datei in ParamStr(1), also dem ersten Parameter. ParamStr(0) ist ja kein Parameter, sondern der Programmname selbst.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 29.06.08 21:31 
Hi,

hab folgendes Problem:
Ich hab das jetzt alles in meinem Prog eingebaut, die Dateiendung Regestriert und das Prog
geht auch auf wenn ich die Datei anklick.
Nur wird sie nich geladen! Und das is noch nich alles: das komiche ist, wenn ich die Datei
nich anklick, sondern auf die Exe zieh, dann gehts??! VERWIRRENT!!
Wenn ich mich richtig erinner, dann ging das mit anklicken in meinem Test-Programm auch.
kp was ich falsch mach!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
if ParamCount > 0 then
  if ParamSTR(1) <> '' then
    if ExtractFileExt(ParamSTR(1)) <> '.mdb' then
      begin
        MessageDLG('Unbekanntes Format',mtError,[mbOK],0);
        Close;
      end
    else
      begin
        Daten.Clear;
        Daten.LoadFromFile(ParamSTR(1));
        MessageDLG('Laden erfolgreich!',mtInformation,[mbOK],0);
      end;

Kann jmd helfen?

MfG Bergmann.
huuuuuh
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: So 29.06.08 21:42 
gibt es denn eine fehlermeldung beim falschen format?
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 29.06.08 21:44 
ne eben nich, das Programm geht einfach auf, so als ob ich ganz normal auf die exe geklickt hätte...
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 29.06.08 22:13 
jetzt gehts...?!

vorher
ausblenden Delphi-Quelltext
1:
InstallExt('.XXX','XXX-Datei','XXX',ExtractFilePath(ParamStr(0))+'XXX.exe','',0)					

nachher
ausblenden Delphi-Quelltext
1:
InstallExt('.XXX','XXX-Datei','XXX',ExtractFilePath(ParamStr(0))+'XXX.exe','"%1"',0)					


und jetzt wird der name übergeben, aber nur bis ein Leerzeichen kommt. dann muss ich den nächsten ParamStr nehmen, komisch!
auf jedenfall sieht das jetzt so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
  if ParamCount > 0 then
    begin
      if FileExists(ParamStr(1)) then FileName := ParamStr(1)
      else
        begin
          FileName := '';
          for i := 1 to ParamCount do
            begin
              FileName := FileName + ParamStr(i);
              if i <> ParamCount then FileName := FileName + ' '
            end;
        end;

      if ParamSTR(1) <> '' then
        if ExtractFileExt(FileName) <> '.mdb' then
          begin
            MessageDLG('Unbekanntes Format',mtError,[mbOK],0);
            Close;
          end
        else
          begin
            Daten.Clear;
            Daten.LoadFromFile(FileName);
            MessageDLG('Laden erfolgreich!',mtInformation,[mbOK],0);
          end;
    end;


MfG Bergmann.
eins.null
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 29.07.08 09:38 
Hallo

Sobald ein Leerzeichen im Parameter-String auftaucht, wird dies als neuer Parameter gewertet. Somit wird auch 'Eigene Dateien' als zwei Parameter gewertet.

Als Lösung schlage ich dir vor, alle Pfade und Dateinamen immer in Anfüruhrungszeichen zu setzen.
(So wie du das schon mit '"%1"' gemacht hast)


Beste Grüße
Matthias
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Di 29.07.08 12:28 
Aber obwohl er es so gemacht hat, werden es mehrere parameter

_________________
1405006117752879898543142606244511569936384000000000.
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Di 10.11.09 16:54 
So, da ja meine Antwort von vorhin verschwunden ist, frage ich halt nochmal:

Ist es normal, dass der Pfad der zu öffnenden Datei immer zerlegt wird, sobald man auf ein Leerzeichen trifft?

Gibt es keine andere Möglichkeit, damit man sich nicht selbst den kompletten Pfad zusammenbasteln muss?

Und warum muss man erst abfragen...

ausblenden Delphi-Quelltext
1:
If FileExists(ParamStr(1))...					


..., wenn der Pfad doch zerlegt ist? Dann kann ja nur False bei rauskommen, denn in meinem Programm ist ParamStr(1) nämlich C:\Dokumente

Gruß,

Terra

_________________
Hasta La Victoria Siempre
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 10.11.09 19:50 
Und für sowas gräbst du einen ein Jahr alten Thread aus?

Pack den Parameter in "" und schon gehts.

_________________
PROGRAMMER: A device for converting coffee into software.
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Di 10.11.09 20:01 
Ja, für sowas grabe ich einen solch alten Thread aus, denn in diesem Thread gab es ja auch augenscheinlich keine Lösung.

Was willst du eigentlich von mir? Auf der einen Seite soll man die Suche benutzen bevor man neue Threads aufmacht und auf der anderen Seite darf man dann in die gefundenen Threads nicht posten?

Ich war 5 Jahre in einem anderen Forum Moderator und ich kann deine Engstirnigkeit absolut nicht nachvollziehen. Wäre der Thread nun 2 oder 3 Jahre alt, dann ja. Aber so?

Und BTW: Meine Parameter sind in "", so wie es auch in EasyHelper gemacht wurde.

Bei mir steht also: '"%1"' und der Pfad wird trotzdem zerlegt.

Ich habe es aber inzwischen so gelöst, dass ich die Anzahl von ParamCount abfrage und den Pfad selber wieder zusammenbaue.

Terra

PS: Wenn es nicht erwünscht ist, dass man in solche Threads postet, dann solltet ihr die vielleicht schließen. Aber da hier ja auch noch keine Lösung für den Threadersteller vorhanden war (sonst hätte er das Thema ja markiert), wird man ja wohl posten dürfen, oder?

_________________
Hasta La Victoria Siempre
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 10.11.09 20:05 
Ja und? Du hast doch schon einen Thread.

Fürs Protokoll: delphi-forum.de/view....php?p=584088#584088

Antwort kommt gleich, da wo sie hingehört.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Di 10.11.09 20:38 
Hey,

eigentlich war das Problem behoben, habs nur nich abgehackt ^^

MfG Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^