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:

freebasic dll grafikausgabe in visual basic nutzen ?
Gehe zu Seite Zurück  1, 2, 3  Weiter
 
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
Dominik



Anmeldungsdatum: 22.12.2004
Beiträge: 172

BeitragVerfasst am: 06.02.2007, 18:18    Titel: Antworten mit Zitat

Hi, du sagst folgendes funktioniert ohne Probleme?

Code:
Sub FunktionInLib(Text As String)
   MessageBox(0, Text, 0, 0)
End Sub


Dann versuch mal das:
Code:
Sub FunktionInLib(Text As String)
   Dim txt As String = Text
   Screen 20
   Print txt
End Sub


Was passiert dann?
Und was passiert wenn du garkeine Ausgabe machst also nur "Screen 20" in der Funktion der Lib steht?
Würde es gerne selbst ausprobieren, habe nur leider kein VB5.
Das ganze ist schon ziemlich merkwürdig... Kopf schütteln

Gruß
Dominik
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 06.02.2007, 19:14    Titel: geht nicht Antworten mit Zitat

hi,

also
Code:

Sub FunktionInLib(Text As String)
   Dim txt As String = Text
   Screen 20
   Print txt
End Sub

kompiliert mir freebasic gar nicht erst....

fehlermeldung Syntax error in def file testdll.def:1


;-(
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 06.02.2007, 19:21    Titel: Antworten mit Zitat

Sein Code ist vollkommen richtig. zeige mal den rest von der datei...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 06.02.2007, 19:55    Titel: Antworten mit Zitat

Hi,

es erscheint immerwieder folgende Fehlermeldung



c:\Programme\FreeBASIC\bin\dlltool.exe: Syntax error in def file testdll.def:1


, wenn ich in der Eingabeaufforderung in
c:\Programme\FreeBASIC\fbc.exe testdll.bas -dylib eingebe


REM FREEBASIC TESTPROGRAMM testdll.bas
#include "windows.bi"

Sub FunktionInLib(Text As String)
Dim txt As String = Text
Screen 20
Print txt
End Sub


;-(
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dominik



Anmeldungsdatum: 22.12.2004
Beiträge: 172

BeitragVerfasst am: 07.02.2007, 21:16    Titel: Antworten mit Zitat

Hallo,

das ist wirklich merkwürdig...
Die gleiche Fehlermeldung erscheint auch bei mir.
Diese kann zwar dadurch behoben werden, dass man "EXPORT" hinter
"Sub FunktionInLib(Text As String)" schreibt, aber das ist doch nicht Sinn der Sache!?

Hat jemand eine Ahnung was diesen Fehler hervorruft?
Komisch ist auch, dass jede andere Funktion, die man noch hinzufügt, kein EXPORT mehr benötigt.

@tom_verbatim
Funktioniert es jetzt bei dir, wenn du EXPORT hinzufügst?
Ggf. musst du auch noch den "-export"-Parameter bei der Kompilierung an fbc.exe übergeben.

Gruß
Dominik
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 08.02.2007, 10:40    Titel: compilieren geht aber .... Antworten mit Zitat

hi dominik,

ja compilieren läßt sich das jetzt, aber irgendwie bekomme ich jetzt unter visual basic 5 eine fehlermeldung, daß er den dll einstiegsprung nicht findet...

wie sollte man das denn jetzt im modul deklarieren mit dem Kopf durch die Mauer wollen ?
ich weiß irgendwie was mit alias @ aber keine ahnung wohin damit ??

Code:

'modul
'SO IST DAS JEDENFALLS FALSCH
Public Declare Sub FunktionInLib Lib "c:\neudll.dll" (text As String)
'form
Private Sub Command1_Click()
 
FunktionInLib "DAS IST EIN TEST"

End Sub


Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 08.02.2007, 10:43    Titel: Antworten mit Zitat

Hi,
ich habe das mal als dll erstellt (EXPORT ist dabei notwendig) und mangels VB nur mit FB ausprobiert.
(alles unter ME und FB0.16b getestet)
1. Version mit MessageBox funktioniert.
2. Version mit SCREEN hängt sich auf.
Was mir dabei auffiel war, wie wird das mit SCREEN erstellte Fenster gesteuert/geschlossen?
3. Version
Code:
' FBC testdll.bas -dll
Sub FunktionInLib(Byval Text As String) Export
   Dim txt As String = Text
   Screen 18
   Print txt
   Sleep 2000
   End
End Sub
funktionierte dann.
Ich bezweifel aber das man so tom_verbatim's Idee realisieren kann??
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 08.02.2007, 10:55    Titel: Antworten mit Zitat

hi volta,



danke für deine mühe...

hat jemand eine idee, wie man die sub in visual basic declarieren muß???

das ist jedenfalls quark und läuft nicht, findet keinen einstiegspunkt; wie schon erwähnt....


arrrrggggg....... man das wäre so genial, wenn das laufen würde......

und wenn nicht, kaufe ich mir ein zx81 und programmiere denn
zwinkern
Code:

Public Declare Sub FunktionInLib Lib "c:\neudll.dll" (text As String)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 08.02.2007, 12:16    Titel: Antworten mit Zitat

Vorschlag (aber ungetestet):
die SUB in der dll so deklarieren
Code:
Public Sub FunktionInLib Cdecl Alias "FunktionInLib" (Byval Text As String) Export
(aus den FB-Examples)
in VB
Code:
Public Declare Sub FunktionInLib Lib "testdll.dll" Alias "FunktionInLib" (Byval Text As String)
(die SUB der inpout32.dll wird so in VB deklariert)
Versuch es mal, andere Ideen dazu hab ich leider nicht mehr.

EDIT/
Code:
Alias "FunktionInLib"
sollte in beiden Deklarationen wegfallen können.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 08.02.2007, 14:55    Titel: geht aber... Antworten mit Zitat

hi volta,


ja, so läuft das, NUR, nachdem die dll aufgerufen wurde und der text im fenster gezeichnet wurde, verabschiedet sich die ide+prg nach dem sleep
;-((( kommt zwar keine fehlermeldung oder hänger aber alles sauber beendet....aaarrgggh das programm soll doch weiterlaufen...
okay, habe dann mal das end weggenommen
und folgendes probiert
Code:

 Public Sub FunktionInLib Cdecl Alias "FunktionInLib" (Byval Text As String) Export
   Dim txt As String = Text
   Screen 18
   Print txt
   DO
LOOP UNTIL INKEY$ = "q"
End Sub


und bekomme dann, wenn ich die dll aufrufe, daß fenster + gezeichneten übergebenen string und wenn die taste q gedrückt wird, meckert vb5
Run-time error "49" Bad DLL calling convention

?!?!??!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 08.02.2007, 15:18    Titel: Antworten mit Zitat

hm.
Andere Idee: (denk ich ma funzt wesentlich besser)

Stell von VB ein Fenster bereit, und zeichne per WinAPI aus FreeBasic in das HDC des VB-Fensters.
Die (übrigens in ASM geschriebene DLL) ProSpeed.DLL macht das so und funzt einwandfrei in jeder Sprache...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 08.02.2007, 15:21    Titel: Antworten mit Zitat

'Bad DLL calling convention' hmm...
FB Referenz hat Folgendes geschrieben:
Stdcall is the standard calling convention used in BASIC languages. In the stdcall convention, arguments are pushed onto the stack in the order which they are received. The return value is stored in the register EAX. Most of the Windows API uses the stdcall method. Functions that use variable parameters (...) cannot be written with the stdcall method, or rather, they can, but the function wouldn't know which is the first parameter, and wouldn't work correctly.

Versuch mal:
Code:
Public Sub FunktionInLib Stdcall Alias "FunktionInLib" (Byval Text As String) Export

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 08.02.2007, 15:32    Titel: neeneenee Antworten mit Zitat

mit dem Kopf durch die Mauer wollen

@Volta
ich sag nur:
Run-time error "453"
Can?t find Dll entry point FunktioninLib in c:\testdll.dll


@PMedia

hast du dafür evtl. einen beispielcode ?
bin da etwas überfragt; ich dachte ja jetzt wauuuhhh, freebasic wie einfach doch, daß in die dll und alles (naja fast alles) ist EASY machbar...

aber easy wandelt sich langsam zu frusty zwinkern


gruß tom
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 08.02.2007, 16:42    Titel: Antworten mit Zitat

Einen Beispielcode habe ich nicht, aber ich kann dich zum Programmierer der ProSpeed weiterleiten. Der kann dir sicher weiterhelfen.

Frank Abbing (Website)
mail@frabbing.de - Frank Abbing (E-Mail)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Xardas



Anmeldungsdatum: 17.09.2006
Beiträge: 23

BeitragVerfasst am: 08.02.2007, 19:35    Titel: Antworten mit Zitat

wenn mich nicht alles täuscht musst du die vb-fenster unsichtbar machen bevor du die screen-function aus fb nutzt.
also formx.visible=false
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 08.02.2007, 19:51    Titel: Antworten mit Zitat

@Xardas
visible oder not visible hat KEINEN EINFLUß
;-(

@PMedia
Danke für den Link ProSpeed.dll wauuuhhhhh, würde ich jetzt gerne in visual basic einbauen; nur wie deklarieren? hast du da zufällig die ahnung von?
hab zwar schon eine email raus an herrn abbing, aber man weiß ja nie, wie lange da da eine antwort auf sich warten läßt ;-(


gruß tom
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 08.02.2007, 19:51    Titel: Antworten mit Zitat

Wieso denn das?
Es ist doch ein eigenständiges Fenster, und die HWnd-Variable wird sich schon nicht überschreiben. Oder?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 08.02.2007, 20:10    Titel: häääääääääää???? Antworten mit Zitat

@PMedia
??? hääää ich glaube irgendwie steh ich auf dem schlauch oder ist das jetzt einfacher als gedacht ?

jedenfalls die prodll muß ich doch als ersten schritt erstmal declarieren oder nicht ?
so in etwa oder nicht ? Public Declare Sub FunktionInLib Lib "c:\ProSpeed.dll" ()

so, die ganzen funktionen der Prospeed Lib muß ich doch auch noch deklarieren oder nicht?
kann doch nicht so einfach drauf los programmieren ?

habe im beispielcode der lib in der anleitung zu stehen für profan wohl
Beispiel:

exhdc&=CreateExtBmp(breite&,hoehe&) 'Leere Bitmap in der Größe des
'Bildschirms erzeugen
CopyExtBmp(exhdc&,0,0,breite&,hoehe&,%HDC,0,0,0) 'Inhalt des Profanfensters hierhin kopieren
array&=InitExtFX(exhdc&) 'Handle (Byte-Array) zu einer Bitmap 'erzeugen
...
FreeExtFX(array&) 'später wieder freigeben

???wie soll ich das denn in vb5 umsetzen ?

gruß thomas
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 08.02.2007, 21:58    Titel: Antworten mit Zitat

Jo, des is ganz einfach, da ich früher in Profan programmiert hab happy
Sämtliche Funktionen die du da siehst gehören zu der ProSpeed.dll (welche übrigens endlich kostenlos ist)
Soll heißen, du solltest ersteinmal die ProSpeed_Funktionen.inc umsetzen nach VB. Der Rest sollte mit dem Handbuch ein Kinderspiel sein.
Ich wollt schon längst ne Include für FB schreiben, war bisher aber immer zu faul.

Fest steht, die ProSpeed.dll funktioniert, und zwar mit jeder Programmiersprache die DLL's nutzt.
Ich kann kein VB, kann dir aber sagen, dass wenn du die ProSpeed zur Grafikgenerierung nimmst, damit fast so glücklich wirst, wie mit DirectDraw, 3D wird leider nicht unterstützt (aber dafür gibs ja PSA3D happy), und fast auch nur weil es nicht Hardwarebeschleunigt ist.

Es war ein Vorschlag, wenn du 2Dimensionales machen willst.
Für 3D empfehle ich dir, es ganz in einer Sprache zu machen.
OpenGL müsste auch in VB möglich sein.
Wenn nicht: so schwer ist FB nu auch wieder nich happy

//Edit:
Für alles ist jedoch wichtig, das HDC deines Hauptfensters zu kennen.
In Profan ist dies möglich durch die Systemvariable %HDC, welches aber auch nur den Wert einer API-Funktion zurückliefert. Ich empfehle dir, Frank Abbing anzuschreiben, er wird dir sicher genaue Auskunft geben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 08.02.2007, 22:36    Titel: Antworten mit Zitat

Zitat:
???wie soll ich das denn in vb5 umsetzen ?

PMedia hat Folgendes geschrieben:
Soll heißen, du solltest ersteinmal die ProSpeed_Funktionen.inc umsetzen nach VB. Der Rest sollte mit dem Handbuch ein Kinderspiel sein.
vor lachen auf dem Boden rollen
PMedia hat Folgendes geschrieben:
Ich wollt schon längst ne Include für FB schreiben, war bisher aber immer zu faul.
Autsch! ... ist doch ein Kinderspiel, oder??
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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
Gehe zu Seite Zurück  1, 2, 3  Weiter
Seite 2 von 3

 
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