Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Erstellen einer DLL mit FreeBASIC

von RedakteurytwinkySeite 1 von 2

FreeBASIC bietet mehrere Möglichkeiten, Funktionen und Sub's zusammenzufassen und anderen Programmen zur Verfügung zu stellen. Wir möchten aber unsere Funktionen und Sub's in eine DLL(Dynamic Link Library) packen. Beim Wühlen in der Befehlsreferenz haben wir Befehle zum Erstellen von dynamischen Libraries gefunden und eigentlich garnichts davon verstanden. Das ist natürlich kein befriedigender Zustand, deshalb möchten wir das ändern. Doch wie fangen wir an?
Dazu sehen wir uns zunächst die Compiler-Optionen an: In einem Dos-Fenster geben wir

fbc

ein und werden bereits bei DLL fündig (eine Übersetzung der Ausgabe ist Externer Link! hier zu finden).
Na, das sieht doch schon mal gut aus, denn genau dies haben wir ja vor ;-))
Bevor wir aber damit anfangen, schauen wir uns den Artikel in Externer Link! Wikibooks an, der auch (den größten Teil) zu diesem Tutorial beigetragen hat ;-))
Die Funktionen, die wir in eine DLL packen wollen, stehen in der Datei "yetlib.bas":

Sub PrintAt( _
      byRef Msg As String, _
      Farbe As Integer=LoWord(Color), _
      Zeile As Integer=CsrLin, _
      Spalte As Integer=Pos _
    )
  Dim As Integer Alt=LoWord(Color)
  Color Farbe
  Locate Zeile, Spalte
  ?Msg
  Color Alt
  Input "Test", Msg
  If Msg="" Then
    Msg="Wasn?"
  End If
End Sub

'soll einen Wert zurückgeben..
Function Deg2Rad(WinkelInDeg As Double) As Double Export
  Return WinkelInDeg/45.0*Atn(1.0)
End Function

'soll einen Wert zurückgeben..
Function Rad2Deg(WinkelInRad As Double) As Double Export
  Return WinkelInRad/Atn(1.0)*45.0
End Function

Function MenuChar( _
          byVal MenuItem As String, _
          byVal First As Integer=1, _
          byVal nVG As Integer=12 _
        ) As String Export '12=hellrot
  Dim cVG As Integer=LoWord(Color)
  If First<>1 Then ?Left(MenuItem, First-1);
  Color nVG
  ?Chr(MenuItem[First-1]);
  Color cVG
  Return Mid(MenuItem, First+1)
  'ist nicht so schlimm, da der Benutzer ja sowieso lesen muß..
End Function

Function GetKeyPress( _
          byVal Msg As String, _
          byVal Allowed As String, _
          byVal Upper As Integer=-1 _
        ) As String
  Dim As String y=""
  If Upper Then Allowed=UCase(Allowed)
  If Msg<>"" Then ?Msg;
  Do
    y=Inkey
    Sleep 1
    If Upper Then y=UCase(y)
  Loop Until Instr(Allowed, y)
 Function=y
End Function

Nun ist es aber leider nicht damit getan, eine Sammlung von Routinen zusammenzustellen. Wir müssen dem Compiler ja auch noch eine spezielle Beschreibung dafür zukommen lassen:

Declare Sub PrintAt Lib "yetlib" Alias "PrintAt" ( _
              byRef Msg As String, _
              Farbe As Integer=LoWord(Color), _
              Zeile As Integer=CsrLin, _
              Spalte As Integer=Pos _
            ) 'Spezialdeklation für PrintAt usw.
Declare Function Deg2Rad Lib "yetlib" Alias "Deg2Rad" _
   (WinkelInDeg As Double) As Double 'soll einen Wert zurückgeben..
Declare Function Rad2Deg Lib "yetlib" Alias "Rad2Deg" _
   (WinkelInRad As Double) As Double 'soll einen Wert zurückgeben..
Declare Function MenuChar Lib "yetlib" Alias "MenuChar" ( _
          byVal MenuItem As String, _
          byVal First As Integer=1, _
          byVal nVG As Integer=12 _
        ) As String '12=hellrot
Declare Function GetKeyPress lib "yetlib" Alias "GetKeyPress" ( _
          byVal Msg As String, _
          byVal Allowed As String, _
          byVal Upper As Integer=-1 _
        ) As String

Diese fügen wir zu Anfang ein. Das ist eine bewußte Schikane, denn wer den fertigen Code einfach nur kompiliert und dies hier nicht liest, kommt sowieso nicht weit..

 

Gehe zu Seite Gehe zu Seite  1  2  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 18.08.2007 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 25.05.2009 von Redakteurytwinky gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen