Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Parameter (https://www.delphipraxis.net/53571-parameter.html)

n0b0dy 20. Sep 2005 09:07

Re: Parameter
 
@Leddl

ParamStr(0) ist soweit ich weiß der eiegene exename (incl. Pfad)

leddl 20. Sep 2005 09:12

Re: Parameter
 
:gruebel: Ja... und? Genau das hab ich oben schon geschrieben. Aber inwiefern hilft das? ;)

PS: Warum mach ich eigentlich ständig eckige Klammern bei ParamStr? :roll:

n0b0dy 20. Sep 2005 09:20

Re: Parameter
 
hm aso meinst du das.
na dann eben ParamCount > 1.
hast schon recht :wall: :wall: :wall:

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

leddl 20. Sep 2005 09:40

Re: Parameter
 
Zitat:

Zitat von n0b0dy
hm aso meinst du das.
na dann eben ParamCount > 1.
hast schon recht :wall: :wall: :wall:

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

:gruebel: 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 :roll:)
Delphi-Quellcode:
if (ParamCount > 1) and (FileExists(ParamStr(1))) then
  ShellExecute(application.Handle, 'print', PChar('"' + ParamStr(1) + '"'), nil, nil, SW_Show);

n0b0dy 20. Sep 2005 09:57

Re: Parameter
 
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 :) :gruebel:

dfried 20. Sep 2005 10:02

Re: Parameter
 
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.

leddl 20. Sep 2005 10:17

Re: Parameter
 
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);

n0b0dy 20. Sep 2005 10:19

Re: Parameter
 
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 :D ich überprüfe das gleichmal


[EDIT]
Zitat:

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 ;)

dfried 20. Sep 2005 10:24

Re: Parameter
 
Zitat:

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 :wall:

leddl 20. Sep 2005 10:25

Re: Parameter
 
:roll: Nein, passt jetzt schon. n0b0dy hat wohl nur vergessen, was er vorhin gesagt hat. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 Uhr.
Seite 2 von 3     12 3      

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-2025 by Thomas Breitkreuz