Notation dll Deklaration

Anfängerfragen zum Programmieren mit PureBasic.
six1
Beiträge: 31
Registriert: 10.11.2009 14:51
Kontaktdaten:

Notation dll Deklaration

Beitrag von six1 »

Hallo,
per Zufall bin ich auf PurBasic gestoßen und habe mir die Vollversion mal zugelegt.
Normalerweise programmiere ich in Delphi oder Microcontroller in C oder in Bascom.

Die Möglichkeit mit PureBasic verschiedene Betriebssysteme zu unterstützen hat mich sehr neugierig gemacht.

Ich möchte nun gerne eine vorhandene dll in ein kleines PB Projekt einbinden.

Das Einbinden der dll bereitet mir keine Probleme.

Die Zeile für eine Funktion der dll in Delphi sieht folgendermaßen aus:

Code: Alles auswählen

function DoGetInfraCode(var TimeCodeDiagram:Array of byte; var DiagramLength:integer):integer;  stdcall external DLLPath name 'DoGetInfraCode';
Wie müsste ich diese Zeile für PB anpassen? Hier interessiert mich natürlich sehr, wie das Array of Byte übersetzt wird :mrgreen:

Gruß, Michael
Gruß, Michael

There are 10 types of people, those that understand binary and those that don't!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Notation dll Deklaration

Beitrag von Kaeru Gaman »

Moin Moin und Willkommen an Board!

Da ich von Delphi keine Scheckung hab, kann ich nur raten.
Die Länge des Tables wird mit angegeben, also würde ich mal schätzen, dass es sich beim ersten Parameter um einen Pointer zu der Tabelle handelt.
da bin ich mir ziemlich sicher.

also würde ich mal vermuten, der Import müßte so aussehen:

Code: Alles auswählen

Import "MyLibName.dll"
  DoGetInfraCode.l (*TimeCodeDiagram.b, DiagramLength.l )
EndImport
kann mich aber auch verhaun haben, Imports sind nicht gerade mein Fachgebiet... :mrgreen:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: Notation dll Deklaration

Beitrag von Rings »

das array von Bytes, ist einfach ein Zeiger auf einen Speicherbereich
wo die daten liegen, Die Länge ist im zweiten Parameter gegeben.
ALs Parameter für das Bytearray also einen 32bit wert Zeiger auf das array
nehmen (.l)
Rings hat geschrieben:ziert sich nich beim zitieren
six1
Beiträge: 31
Registriert: 10.11.2009 14:51
Kontaktdaten:

Re: Notation dll Deklaration

Beitrag von six1 »

Hey, das ging ja fix :D vielen Dank!

Also, sieht ganz gut aus... bis jetzt. Ich muss aber ziemlich viel deklarieren, um die volle Funktion der dll zu haben.

Wenn ich's fertig habe, setze ich es hier rein.
Es geht im Grunde darum, dass man Atmel Microcontroller (Tiny2313 und Mega8) als USB Controller benutzen kann. Diese bieten dann, ja nach verwendetem Typ, parallele und serielle Anschlüsse an.

Praktisch gesehen: Man könnte ein LCD Display mit einem kleinen Tiny verbinden und über den Krempel, den ich gerade umsetze, über USB was auf das Display schreiben...

oder tausend andere Dinge :mrgreen:


so, gehe noch ein bisschen hacken...
Gruß, Michael

There are 10 types of people, those that understand binary and those that don't!
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Notation dll Deklaration

Beitrag von H.Brill »

Wäre echt klasse.
Hab nämlich auch Atmels und ein
Experimentierboard und noch anderes
(Easy Radio usw.).

PS: stdcall für Delphi sieht schon mal
gut aus. Probiers doch mal gleich mit
einem Byte - Array
Dim MyArray.b(anzahl) und übergebe
es mal mit @MyArray() der Funktion.
Hat bei mir schon bei anderen DLLs
als Übergabe von Speicherbereich geklappt.
PB 6.10
six1
Beiträge: 31
Registriert: 10.11.2009 14:51
Kontaktdaten:

Re: Notation dll Deklaration

Beitrag von six1 »

unter Delphi habe ich das alles am rennen.
Ich muss mich erst wieder an den Dialekt von PB gewöhnen :mrgreen: wird wieder alles etwas anders geschrieben...

Wobei ich aber auch etwas verwöhnt bin in Bezug auf die Application Erstellung! Das geht mit Delphi "etwas" eleganter. :)

btw, wie kommentiert man mehrere Zeilen auf einmal aus?
also sowas: /*...*/ oder {...} oder '{...'} hach, man hat's schon schwer :lol:

Gruß, Michael
Gruß, Michael

There are 10 types of people, those that understand binary and those that don't!
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Notation dll Deklaration

Beitrag von Kiffi »

six1 hat geschrieben:btw, wie kommentiert man mehrere Zeilen auf einmal aus?
'Auskommentieren': Zeilen markieren -> Ctrl + B

'Einkommentieren': Zeilen markieren -> Alt + B

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: Notation dll Deklaration

Beitrag von PMV »

Kaeru Gaman hat geschrieben:

Code: Alles auswählen

Import "MyLibName.dll"
  DoGetInfraCode.l (*TimeCodeDiagram.b, DiagramLength.l )
EndImport
:?
Kaeru! *.b ... also ... :bluescreen:

:wink:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
six1
Beiträge: 31
Registriert: 10.11.2009 14:51
Kontaktdaten:

Re: Notation dll Deklaration

Beitrag von six1 »

Fragen über Fragen:

1) gibt es so etwas wie einen Timer? (zeitlich einstellbaren Event) unter "Timer" oder "Clock" habe ich sowas nicht gefunden. Ich glaube doch nicht, dass man sowas über gettickcount zusammen basteln muss, oder? :shock:

2) kann man eine Komponente "finden" über Angabe des Namen als String. in Delphi gibt es eine Funktion findcomponent('Name der Komponente' as TLabel) z.B.
Wichtig hierbei wäre für mich z.B. die enumeration von 8 Button, welche im Prinzip jeweils einem Bit eines Byte zugeordnet sind.
z.B. #Button_a_0, #Button_a_1 ...
danach so etwas wie

for x := 0 to 7 do begin
(findcomponent('Button_a_' + inttostr(x)) as TButton).toggle := port_a_byte and (1 shl x);
end;

...wobei es keine Eigenschaft "toggle" bei den Delphi Komponenten gibt :D

oder wie macht man das "schön" in PB??? :lurk:

...wenn so Fragen nerven, dann sagt das!
Gruß, Michael

There are 10 types of people, those that understand binary and those that don't!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Notation dll Deklaration

Beitrag von Kaeru Gaman »

PMV hat geschrieben:
Kaeru Gaman hat geschrieben:

Code: Alles auswählen

Import "MyLibName.dll"
  DoGetInfraCode.l (*TimeCodeDiagram.b, DiagramLength.l )
EndImport
:?
Kaeru! *.b ... also ... :bluescreen:

:wink:

MFG PMV
äh.. ja.. die struct also
*TimeCodeDiagram.Byte

aber wie gesagt, von Imports versteh ich nich so viel, das ist die Deklaration des Pointers, ob die so in die Deklaration des Aufrufs reingehört weiß ich nicht.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten