AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Parameter

Ein Thema von sysadmin · begonnen am 19. Sep 2005 · letzter Beitrag vom 20. Sep 2005
Antwort Antwort
Seite 2 von 3     12 3      
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#11

Re: Parameter

  Alt 20. Sep 2005, 10:07
@Leddl

ParamStr(0) ist soweit ich weiß der eiegene exename (incl. Pfad)
Gruß Fabi
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Parameter

  Alt 20. Sep 2005, 10:12
Ja... und? Genau das hab ich oben schon geschrieben. Aber inwiefern hilft das?

PS: Warum mach ich eigentlich ständig eckige Klammern bei ParamStr?
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#13

Re: Parameter

  Alt 20. Sep 2005, 10:20
hm aso meinst du das.
na dann eben ParamCount > 1.
hast schon recht

ich mach das immer inner schleife, und hab mir darüber noch keine gedanken gemacht. *g*
die läuft dann von 1 to ParamCount.

also haste recht1
Gruß Fabi
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Parameter

  Alt 20. Sep 2005, 10:40
Zitat von n0b0dy:
hm aso meinst du das.
na dann eben ParamCount > 1.
hast schon recht

ich mach das immer inner schleife, und hab mir darüber noch keine gedanken gemacht. *g*
die läuft dann von 1 to ParamCount.

also haste recht1
Wie jetzt? Die beiden Absätze widersprechen sich irgendwie. Im einen gibst du mir recht und sagst, daß ParamStr(0) mitgezählt wird, im nächsten sagst du, deine Schleife läuft von 1 bis ParamCount. Sollte ParamStr(0) aber mitgezählt werden bekommst du ne Exception. Also wenn, dann bis ParamCount-1

@sysadmin:
Aber so, wie du das jetzt gelöst hast, ist es eigentlich auch nicht sinnvoll. Was machst du, wenn dein Programm zwar mit einem Parameter gestartet wird, dieser aber komplett unsinnig ist?
Besser wäre es, erst zu überprüfen, ob ParamCount > 1 ist (oder 0, falls ParamStr(0) nicht mitgezählt wird), und dann zu testen, ob die Datei überhaupt existiert. Evtl wäre es auch noch besser, den Parameter in "s zu packen, damit er auch auf jeden Fall als 1 Parameter erkannt wird. (Edit: Wobei ich ja auch nicht der erste bin, der das hier sagt )
Delphi-Quellcode:
if (ParamCount > 1) and (FileExists(ParamStr(1))) then
  ShellExecute(application.Handle, 'print', PChar('"' + ParamStr(1) + '"'), nil, nil, SW_Show);
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#15

Re: Parameter

  Alt 20. Sep 2005, 10:57
hää?

da wird doch keine Exception ausgelöst, wenn ich das hier mache:

Delphi-Quellcode:
  for i := 1 to ParamCount do
    if FileExists(ParamStr(i)) then
      // öffne diese Datei unter ParamSTr(i)
ParamStr(0) gibt es immer, egal ob ich parameter übergebe oder nicht.
und in diesem fall wird halt ParamStr(0) nicht berücksichtigt, weil ich ja nicht die eigene exe öffnen will... (eigeneExe steht ja unter ParamStr(0))

oder ich raff grade net, was du mir sagen willst
Gruß Fabi
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#16

Re: Parameter

  Alt 20. Sep 2005, 11:02
Er ging halt davon aus, dass auch wenn keine Parameter an das Programm übergeben werden der Paramcount = 1 ist, weil ja Paramstr(0) immer da ist. Dem ist aber nicht so. Paramcount berücksichtigt Paramstr(0) nicht und gibt somit 0 zurück wenn keine Parameter an das Programm übergeben wurden.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Parameter

  Alt 20. Sep 2005, 11:17
Wenn ParamStr 0-basiert ist (und ParamCount den 0-ten Parameter mitzählt!), ist der höchste Index ParamCount-1. Daher bekommst du beim Zugriff auf ParamStr(ParamCount) eine Zugriffsverletzung, da dieser Parameter schließlich nicht existiert

@dfried:
Genau das war ja meine Frage. Ich war mir nicht sicher, ob ParamCount eben auch ParamStr(0) mitzählt, da ich schon lange nicht mehr mit Parametern gearbeitet habe.
Aber n0b0dy meinte ja, daß es so sei, und daher war seine Aussage eben widersprüchlich.

Mit dem Wissen, daß dem aber nicht so ist, sollte also der Ausdruck tatsächlich lauten:
Delphi-Quellcode:
if (ParamCount > 0) and (FileExists(ParamStr(1))) then
  ShellExecute(application.Handle, 'print', PChar('"' + ParamStr(1) + '"'), nil, nil, SW_Show);
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#18

Re: Parameter

  Alt 20. Sep 2005, 11:19
nein. es ist eben nicht so!!!

ParamStr(0) wird bei ParamCount NICHT mitgezählt.

jetzt bald weiß ich net mehr was stimmt udn was net ich überprüfe das gleichmal


[EDIT]
Zitat von n0b0dy:
hm aso meinst du das.
na dann eben ParamCount > 1.
...
hm habs überprüft und habe recht. also müsste es in der tat ParamCount >= 1 heißen oder einfach nur ParamCount > 0
Gruß Fabi
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#19

Re: Parameter

  Alt 20. Sep 2005, 11:24
Zitat von n0b0dy:
nein. es ist eben nicht so!!!
Was ist eben nicht so?

leddl hat doch schon geschrieben, dass er sich nicht sicher war ob ParamCount auch den ParamStr(0) mitsählt, und nach meinem Post hat er ja dann auch nettwerweise gleich noch eine Funktionierende Lösung mitgeliefert?!?

Oder versteh ich jetzt nur Bahnhof
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#20

Re: Parameter

  Alt 20. Sep 2005, 11:25
Nein, passt jetzt schon. n0b0dy hat wohl nur vergessen, was er vorhin gesagt hat.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz