Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Dll aufrufen | Objekte

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Make-Grafik



Anmeldungsdatum: 08.10.2012
Beiträge: 29

BeitragVerfasst am: 12.10.2012, 19:24    Titel: Dll aufrufen | Objekte Antworten mit Zitat

Guten Abend Community.

Ich habe 2 anliegen:

1-> Ich habe eine eigene Dll zum testen geschrieben. Hier ist das Script, was in der Dll steht:
Code:
' MyDll.dll

Function _Add(a As Integer, b As Integer) As Integer Export
   Return a + b
End Function


Wie rufe ich die Funktion in der Dll auf?

2-> Ist es möglich, eine UDT zu erstellen, diese als dll oder ein anderen Datentyp abzuspeichern und in einen anderen Script zu nutzen?

Wenn ja, wie?


>>> Ich bedanke mich dann schonmal im Vorraus grinsen
_________________
Hmn :/ Mal schaun was es bringt...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 12.10.2012, 19:52    Titel: Antworten mit Zitat

Erstelle eine zweite Codedatei (man spricht üblich von Code oder Quelltext, Script passt hier nicht ganz) und schreib das rein:
Code:
Declare Function _Add Lib "MyDll" (a As Integer, b As Integer) As Integer

Print _Add(5, 7)
Sleep


Wenn die DLL im gleichen Ordner ist, funktioniert das so schon.

UDTs lassen sich nicht einfach übertragen. Üblicherweise erstellt man eine Headerdatei (.bi), in der das UDT definiert wird. Der Header wird dann sowohl in der DLL als auch im Programmcode direkt mit #Include eingebunden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 12.10.2012, 19:57    Titel: Antworten mit Zitat

...und dann bekommt man von der DLL-Funktion typischerweise einen Pointer auf die struct- bzw. TYPE-Variable irgendwo im Speicher.
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Make-Grafik



Anmeldungsdatum: 08.10.2012
Beiträge: 29

BeitragVerfasst am: 12.10.2012, 19:57    Titel: Antworten mit Zitat

Okey, danke für die Information und zu dem Beispiel Code.

Zu dem Script: Wieso passt das nicht? geschockt
_________________
Hmn :/ Mal schaun was es bringt...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 13.10.2012, 12:00    Titel: Antworten mit Zitat

Typischer weise ist ...
... ein Skript ein Quellcode bzw. eine Liste von Befehlen, welcher nicht oder erst zur Laufzeit Kompiliert werden und damit "ad hoc" ausführbar ist und einen sogenannten "Laufzeitinterpreter" benötigt

... in reiner Quellcode oder Sourcecode ein Liste von Befehlen die noch vor der Ausführung von einem Compiler übersetzt werden muss, bevor der Computer ihn verarbeiten kann.

Es gibt für Skripte teilweise auch Compiler, welche eine selbstständig laufende Datei erzeugen. Ebenfalls gibt es natürlich auch Interpreter für Quellcodes.

Beide sind allerdings Nachteilig für deren Aufgabengebiet.

Skripte sind dafür gedacht, schnell Änderungen vorzunehmen ohne sie neu kompilieren zu müssen. Wird meist mit PHP, HTML, XML, usw. verwendet. Hier jedoch ohne Laufzeitinperpreter nutzlos.

Quellcode ist eher dafür gedacht, das der Quellcode nicht wirklich ersichtlich übertragen werden muss, der benutzer folglich nicht noch irgend etwas zu tun hat, bevor er das programm nutzen kann, und daher auch eine sogenannte "binary" besitzt. Eine vom Computer sofort verstandene Datei, ohne (meist) irgend welchem zusätzlichem Schnickschnak.
Die Ausgabe ist typischer weise eine ".exe" oder bei linux ohne Dateiendung. Hier läuft das "kompilat" ohne Interpreter bereits auf dem Computer.

Ein Gravierender Unterschied zu beiden dingen ist die Verarbeitungsgeschwindigkeit.
Ein Skript ist extrem langsam im vergleich zu einer guten Binary.


MfG
TPM

PS: Vieleicht interessant für dich: http://www.freebasic-portal.de/tutorials/plugin-programmierung-dll-so-55.html
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Make-Grafik



Anmeldungsdatum: 08.10.2012
Beiträge: 29

BeitragVerfasst am: 13.10.2012, 15:36    Titel: Antworten mit Zitat

Ah, okey lächeln

Dann werde ich in Zukunft darauf achten happy

Danke Zunge rausstrecken
_________________
Hmn :/ Mal schaun was es bringt...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 13.10.2012, 21:46    Titel: Antworten mit Zitat

@TPM:
HTML und XML sind Skriptsprachen?

Typische Skriptsprachen wären z.B. PHP (schon genannt), Python, Ruby, JavaScript (oft in HTML und SVG-Dokumenten eingebettet)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 14.10.2012, 00:12    Titel: Antworten mit Zitat

Für mich is "auszeichnungssprache" und "skriptsprache" das selbe, da beides von nem Interpreter verarbeitet werden muss und nicht als binary vorliegt. zwinkern .. aber, über sowas streiten sich schon die leute (warscheinlich) seitdem es diesen unterschied gibt.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 14.10.2012, 00:26    Titel: Antworten mit Zitat

Also reines HTML ist definitiv keine Skriptsprache, da nicht Turing-vollständig.
Aber da XML sehr generisch ist, kann man natürlich sich eine Skriptsprache in XML ausdenken, XSLT z.B., welches Turing-vollständig (und ein sehr mächtiges Werkzeug obendrein) ist.

Jetzt sagst du aber "..., da beides von nem Interpreter verarbeitet werden muss"... und hier wird es interessant! Eine längere Diskussion spare ich mir, jeder hier weiß worauf ich (und auch TPM) hinaus wollen! lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 15.10.2012, 16:30    Titel: Antworten mit Zitat

Wenn ich mich nicht sehr täusche, ist Make-Grafik auch im AutoIt.de-Forum aktiv, damit ist die Skriptfrage schon mal geklärt..
..im AutoIt-Forum hat eukalyptus - sehr zur Freude der AutoIt-Community - ein Tut geschrieben, wie einfach DLLs mit FreeBasic erstellt werden können.
Deshalb schätze ich (schon wegen der Function in der Lib), daß Make-Grafik einfach nur mal die DLL-Erstellung ausprobieren möchte zwinkern
n.b.: Eigentlich wollte ich das hier mit dem SmartPhone posten, aber ich habe die ganzen Paßwörter etc noch nicht übertragen, deshalb also per Computer
Gruß
ytwinky
[Edit]
Link ins AutoIt-Forum eingefügt..
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz