![]() |
Re: Parameter
@Leddl
ParamStr(0) ist soweit ich weiß der eiegene exename (incl. Pfad) |
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: |
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 |
Re: Parameter
Zitat:
@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); |
Re: Parameter
hää?
da wird doch keine Exception ausgelöst, wenn ich das hier mache:
Delphi-Quellcode:
ParamStr(0) gibt es immer, egal ob ich parameter übergebe oder nicht.
for i := 1 to ParamCount do
if FileExists(ParamStr(i)) then // öffne diese Datei unter ParamSTr(i) 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: |
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.
|
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); |
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:
|
Re: Parameter
Zitat:
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: |
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. |
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