Parameterverteilung in Visual Basic

Fragen zu allen anderen Programmiersprachen.
Kekskiller
Beiträge: 752
Registriert: 14.09.2004 21:39
Kontaktdaten:

Parameterverteilung in Visual Basic

Beitrag von Kekskiller »

Ich habe gerade überlegt, wie ich die Parameterangabe zu einer Dll gestalte,
als mir in der kleinen Dokumentation darüber dieses Visual Basic-Schnipselchen
in die Augen kam;

Code: Alles auswählen

Beispiel für Visual Basic : 

Private Declare Function compilebat Lib "compiler.dll" (ByVal bat As String, ByVal exe As String, ByVal ico As String, ByVal version As String, ByVal beschreibung As String, ByVal copyright As String, ByVal firmenname As String, ByVal internname As String, ByVal originalname As String, ByVal productname As String, ByVal productversion As String) As Long

Call compilebat("C:\test.bat", "C:\test.exe", "C:\test.ico", "1.3", "Kleines Test-Programm", "(c) by Bionic-Software", "Bionic-Software", "MyProgramm", "TestProgramm", "Productname", "1.3")

Für eine normale Anwendung werden nur die beiden Pfadangaben der Bat- und Exe-Datei benötigt. Die Argumente von "ico" bis "productversion" sind optional. Beachten Sie bitte, dass wenn Sie die Argumente voll ausnutzen, die Größe der Exe-Datei steigen kann.
Nagut, da werden Parameter angeben, aber genau weiß ich nicht, mit was
es sich da auf sich hat, sprich, ich habe keinen Ahnung von VB und werde
daher auch nicht aus dieser Funktion schlau. Werden die dortigen
Parameter normal per Leerzeichen getrennt (unwahrscheinlich) oder direkt
per Anführungszeichen? Ich bin nähmlich nicht besonders scharf aufs
ständige Ausprobieren, daher meine Frage.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Das sollte theoretisch so aussehen:

Code: Alles auswählen

Procedure.l compilebat(bat.s, exe.s, ico.s, version.s, beschreibung.s, copyright.s, firmenname.s, internname.s, originalname.s, productname.s, productversion.s)
Oder was meinst du?
Bild
Kekskiller
Beiträge: 752
Registriert: 14.09.2004 21:39
Kontaktdaten:

Beitrag von Kekskiller »

Ich meine, wie das mit dem Dllaufrufen ist. Normalerweise kann man ja bei
PB per RunProgram ja Dateien und Programme starten. Das sieht dann so aus:
ExecFile("program.exe","/a /b /t3 "568549","",2)
Aber da weiß ich, dass zwischen Programmname und Parameter ja ein
Trennzeichen (" ") gesetzt wird. Bei VB weiß ich nicht, wie das mit Dlls
gemacht wird. Denn man kann Dllaufrufe ja ähnlich wie ExecFile benutzen
(glaube schon, habe jetzt keinen Syntax dabei) und daher muss ich wissen,
wie das VB in diesem Beispiel macht. Macht es dann so eine "Parameterausgabe":
library.dll "bla" "hmpf"
Oder doch so:
library.dll bla hmpf
Oder doch anders :? ? Keine Ahnung, da bin ich überfragt, weshalb ich hier
auch einen Thread aufmache. Ich muss jedenfalls wissen, wie ich da was in
welche Klammern bei Parametern übergeben muss, also in "" oder nicht, und
wenn, wie trennen? Ach ist blöd zu erklären.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Na du musst doch nur die Library-Befehle verwenden, also [c]LoadLibrary()[/c] usw.

Ansonsten würde ich es mal mit der Anführungszeichen-um-jeden-Parameter-Methode versuchen.
Bild
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Eine DLL wird in PB soweit ich weiß anders aufgerufen.

Schau die mal die Befele OpenLibrary() und CallFunction() an.

Ich glaube damit erledigt sich diese Frage


Edit: NtQ war zwar schneller, dafür hab ich heruasgefunden, dass es in meiner PB-Version (3.92) keine (zumindest nicht dokumentiert) Funktion namens LoadLibrary() gibt.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1754
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

bluejoke hat geschrieben: Edit: NtQ war zwar schneller, dafür hab ich heruasgefunden, dass es in meiner PB-Version (3.92) keine (zumindest nicht dokumentiert) Funktion namens LoadLibrary() gibt.
Gibt's auch nicht. Mit OpenLibrary() wird die DLL geöffnet und danach können alle weiteren Befehle zum Einsatz kommen... :)
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@Kekskiller

Die Procedure von NickTheQuick ist korrekt. Die Dll erwartet 11 Parameter. Für nicht verwendete kannste "" angeben. Die Dll muß natürlich mit

Code: Alles auswählen

dll = OpenLibrary(#PB_Any, "compiler.dll")
CallFunction(dll, "compilebat", Arg1, Arg2, ... Arg11)
CloseLibrary(dll)
aufgerufen werden
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kekskiller
Beiträge: 752
Registriert: 14.09.2004 21:39
Kontaktdaten:

Beitrag von Kekskiller »

Ok, danke Leute. Ich war mir nur nicht so sicher, wegen dem Klammerkram,
aber wenn es so gut funktioniert werde ich damit mal rumprobieren.
Antworten