Seite 1 von 2
Kommandozeile / DLLs einbinden
Verfasst: 10.03.2010 00:21
von EgonEprom
Hallo allemiteinander
hab mal wieder 2 Fragen, zu denen ich im Handbuch keine Hilfe finde:
1. Wie komme ich an den vollständigen Kommandozeilen-String: gibt es da
a) ein Hintertürchen oder
b) muß ich für alle i% = 0 to CountProgramParameters() die ProgramParameter(i%) zusammenfassen - und welche Zeichen gehen dabei verloren ?
2. Kann ich eine DLL in mein *.EXE einbinden und von "intern" laden - ähnlich die *.WAV-Datei, die mittels
label: IncludeBinary "datei.WAV"eingebunden wird und dann zur Laufzeit per CatchSound(#num,?label)
geladen wird und nicht mehr als externe Datei existieren muß (wäre wohl praktisch, wenn das Programm immer seine DLL dabei hat - und zwar die richtige...)
danke vorab & mfg
EgonEprom
Re: Kommandozeile / DLLs einbinden
Verfasst: 10.03.2010 02:03
von ts-soft
Zu 1: Alternativ die API nehmen, wenn Du es lieber unbequem möchtest
Unter Windows wäre das:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
oder Dein Hintertürchen, wobei sich mir der Sinn nicht erschließen will.
Zu 2: Wird nicht unterstützt. Es gibts einen C-Code von Joachim Bauch für 32-Bit Windows,
den zur lib kompilieren (mit PellesC z.B.) und in PB importieren oder testen ob die entsprechende Lib in PBOSL
(LoadDLLFromMemory o. ä.)noch funktioniert.
Gruß
Thomas
Re: Kommandozeile / DLLs einbinden
Verfasst: 10.03.2010 02:28
von c4s
So ist es eventuell etwas schlanker:
Code: Alles auswählen
Repeat
Parameter.s = ProgramParameter()
Select Parameter
;[...]
EndSelect
Until Len(Parameter) = 0
Re: Kommandozeile / DLLs einbinden
Verfasst: 10.03.2010 19:11
von sverson
EgonEprom hat geschrieben:1. Wie komme ich an den vollständigen Kommandozeilen-String:
Ich würde das so machen:
Code: Alles auswählen
Procedure.s ProgramParameters()
Protected ProgramParameter$, ProgramParameters$ = ""
ProgramParameter$ = ProgramParameter()
While ProgramParameter$<>""
ProgramParameters$ + ProgramParameter$ + " "
ProgramParameter$ = ProgramParameter()
Wend
ProcedureReturn RTrim(ProgramParameters$)
EndProcedure
Debug ">"+ProgramParameters()+"<"

Sven
Re: Kommandozeile / DLLs einbinden
Verfasst: 10.03.2010 19:23
von ts-soft
In diesem Falle ist eine fußgesteuerte Schleife aber günstiger
Habs mal angepaßt, desweiteren hab ich ein LCase() hinzugefügt, da
die Auswertung von KommandZeilenparameter im allg. ja CaseInsensitive
gemacht wird.
Code: Alles auswählen
Procedure.s ProgramParameters()
Protected ProgramParameter$, ProgramParameters$ = ""
Repeat
ProgramParameter$ = ProgramParameter()
ProgramParameters$ + ProgramParameter$ + " "
Until ProgramParameter$ = ""
ProcedureReturn LCase(RTrim(ProgramParameters$))
EndProcedure
Debug ">" + ProgramParameters() + "<"
Aber der Sinn des Zusammenfügens entzieht sich mir immer noch.
Weil am prakt. ist doch die Auswertung wie in c4s seinem Beispiel.
Gruß
Thomas
Re: Kommandozeile / DLLs einbinden
Verfasst: 10.03.2010 21:10
von sverson
...In diesem Falle ist eine fußgesteuerte Schleife aber günstiger...
Klar! - Ich war ein bisschen zu schnell mit tippen und wegschicken
Das LCase() hatte ich allerdings absichtlich weggelassen, da ich es so verstanden hatte, dass EgonEprom den kompletten (unveränderten) Kommandozeilen-String haben möchte. Er hatte ja gefragt, welche Zeichen verloren gehen.
Gruß
Sven
Re: Kommandozeile / DLLs einbinden
Verfasst: 30.03.2010 15:31
von _JON_
Hallo,
ist es auch möglich die komplette Kommandozeile exakt zu erhalten (ohne %0) ?
In der vorherigen Beispielen gibt es Probleme mit Ausführungszeichen, diese werden entfernt.
Gruß
Jon
Re: Kommandozeile / DLLs einbinden
Verfasst: 30.03.2010 15:54
von ts-soft
_JON_ hat geschrieben:Hallo,
ist es auch möglich die komplette Kommandozeile exakt zu erhalten (ohne %0) ?
In der vorherigen Beispielen gibt es Probleme mit Ausführungszeichen, diese werden entfernt.
Gruß
Jon
Hab zwar bereits auf die API hingewiesen, aber hier nochmals in klarschrift
Re: Kommandozeile / DLLs einbinden
Verfasst: 30.03.2010 16:09
von NicTheQuick
Zudem ist Kleinschrift schlecht für Dateinamen, die nur unter Windows caseinsensitive sind.
Re: Kommandozeile / DLLs einbinden
Verfasst: 30.03.2010 16:10
von _JON_
Danke für die schnelle Antwort
Leider stehen API in der DEMO Version nicht zur Verfügung und Ich wollte erstmal reinschnuppert.