Seite 1 von 2
Parameter auslesen/irgendwas anderes
Verfasst: 24.06.2006 20:14
von Alves
Moin erstmal,
nach diesem schönen 2:0 (irgendwelche Schweden hier?), stell ich mal wieder ne Frage:
Falls man es in der Suche finden kann, bitte Links zu den entsprechenden Topics, habe in der Suche nämlich nichts gefunden.
Wie finde ich raus, welche Parameter meinem Programm beim Start übergeben werden?
So zB
Öffnen mit: Texteditor (meinen).
Wie mach, dass meine Prozedur "open()" dann mit den Parametern aufgerufen wird?
Danke schonmal.
MfG
Alves
Verfasst: 24.06.2006 20:45
von vonTurnundTaxis
Schau dir mal den ProgramParameter()-Befehl an.
Verfasst: 24.06.2006 20:53
von Alves
Hab ich schon von roherter gekriegt, komme mit diesem Code aber nocht auf die Lösung:
Code: Alles auswählen
Procedure openp(param$)
ReadFile(0,param$)
ClearGadgetItemList(#Editor_0)
If param$
While Eof(0) = 0
offnentext$ = ReadString()
AddGadgetItem(#Editor_0, -1, offnentext$ )
Wend
gesaved=1
EndIf
EndProcedure
[...]
Parameter$ = ProgramParameter()
Open_Window_0()
If parameter$<>""
openp(parameter$)
EndIf
Edit: Hab den Fehler schon bemerkt und korrigiert. (1x paramter$ und einaml parameter$)
Aber: Wenn ich daztu diesen Code verwende:
Code: Alles auswählen
RunProgram("C:\TextEditor.exe", "C:\InternetHighSore.txt", "")
dann zeigt er im RichEdit nur "C:\InternetHighSore.txt" an.
Außerdem, wenn ich das Programm mit (Windows) "Öffnen mit..." öffne, zeigt er nichts im RichEdit an. Er öffnet nur den TextEditor.
Verfasst: 24.06.2006 21:03
von #NULL
Code: Alles auswählen
n=CountProgramParameters()
If n=0
Debug "nix"
End
EndIf
For i=1 To n
param$=ProgramParameter()
Debug param$
Debug GetPathPart(param$)
Debug GetFilePart(param$)
Debug GetExtensionPart(param$)
Debug ""
Next
ausserdem ändern:
If param$ --> if IsFile(0)
Verfasst: 24.06.2006 21:10
von Alves
Die CountPorgramParamters() gibts nicht unter 3.94.
Edit:Mir IsFile klappt es jetzt mit Parametern, die ich mit PureBasic übergebe, aber mit den Windows "Öffnen mit..." klappts immer noch nicht.
Edit2: Es klappt aber auch nicht mit allen Parametern. "C:\hallo.txt" mit
hallo
mehrzeilen
als Inhalt funzt, die "C:\Dokumente und Einstellungen\User\Desktop\alvismus-vor-loschung.txt" mit großem Inhalt funzt nicht.
Verfasst: 24.06.2006 21:21
von #NULL
dann debugge eben so
Code: Alles auswählen
param$=ProgramParameter()
While param$
Debug param$
Debug GetPathPart(param$)
Debug GetFilePart(param$)
Debug GetExtensionPart(param$)
Debug ""
param$=ProgramParameter()
Wend
die parameter können bei der gleichen datei variieren, je nach dem ob der programmaufruf von konsole, durch *.lnk (verknüpfung)), oder durch drag'n'drop zustande kam -> lieber fall-unterscheiden.
Verfasst: 24.06.2006 21:27
von Alves
Deine Codesnippets funzen ja,
meine:
Code: Alles auswählen
Procedure openp(param$)
ReadFile(0,param$)
ClearGadgetItemList(#Editor_0)
If IsFile(0)<>0
While Eof(0) = 0
offnentext$ = ReadString()
AddGadgetItem(#Editor_0, -1, offnentext$ )
Wend
gesaved=1
;EndIf
Else
MessageRequester("Fehler", "TextEditor.exe muss geschlossen werden",0)
End
EndIf
EndProcedure
aber bei manchen Dateien nicht.
Dann sagt mit das IsFile, dass die dateien nicht bereit sind, obschon sie eindeutig existieren.
Die gleichenm Dateien kann ich auch Öffnen, wenn ich im Programm den Menupunkt "Öffnen" drücke.
Verfasst: 25.06.2006 03:40
von mk-soft
Bei Parameterübergabe von Ordner oder Dateien müssen diese in Anführungszeichen übergeben werden, da sonst etventuelle Leerzeichen als Trennzeichen Interpretiert werden
Programm.exe "Meine Datei.pb"
Code: Alles auswählen
OpenConsole()
param$=ProgramParameter()
While param$
PrintN(param$)
param$=ProgramParameter()
Wend
Input()
CloseConsole()
ProgPar "Meine Datei.pb"
-> Meine Datei.pb
ProgPar Meine Datei.pb
-> Meine
-> Datei.pb
FF

Verfasst: 25.06.2006 12:50
von #NULL
@alves
check die dateien mal damit (exe von console aufrufen, über drag'n' drop oder auch *.lnk-datei), so hat bei mir alles geklappt
Code: Alles auswählen
OpenConsole()
param$=ProgramParameter()
While param$
PrintN( param$ )
PrintN( "path : "+GetPathPart(param$) )
PrintN( "file : "+GetFilePart(param$) )
PrintN( "extension : "+GetExtensionPart(param$) )
fileNr=ReadFile(#PB_Any, param$ )
If fileNr
PrintN( "readfile : yes" )
CloseFile(fileNr)
Else
PrintN( "readfile : no" )
EndIf
PrintN( "" )
param$=ProgramParameter()
Wend
Input()
Verfasst: 25.06.2006 13:00
von #NULL
und insofern die dateien text enthalten klappt bei mir auch das hier:
Code: Alles auswählen
#Editor_0=0
Declare openp(param$)
OpenWindow(0,10,10,400,280,0,"lala")
CreateGadgetList( WindowID(0))
EditorGadget(#Editor_0 ,0,0,400,280)
param$=ProgramParameter()
If param$
openp(param$)
EndIf
Repeat
Delay(10)
event=WindowEvent()
Until 0
Procedure openp(param$)
ReadFile(0,param$)
ClearGadgetItemList(#Editor_0)
If IsFile(0)
While Eof(0) = 0
offnentext$ = ReadString()
AddGadgetItem(#Editor_0, -1, offnentext$ )
Wend
gesaved=1
;EndIf
Else
MessageRequester("Fehler", "TextEditor.exe muss geschlossen werden",0)
End
EndIf
EndProcedure