| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 06.02.2007, 18:18 Titel: |
|
|
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...
Gruß
Dominik |
|
| Nach oben |
|
 |
tom_verbatim
Anmeldungsdatum: 03.02.2007 Beiträge: 53
|
Verfasst am: 06.02.2007, 19:14 Titel: geht nicht |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.02.2007, 19:21 Titel: |
|
|
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 |
|
 |
tom_verbatim
Anmeldungsdatum: 03.02.2007 Beiträge: 53
|
Verfasst am: 06.02.2007, 19:55 Titel: |
|
|
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 |
|
 |
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 07.02.2007, 21:16 Titel: |
|
|
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 |
|
 |
tom_verbatim
Anmeldungsdatum: 03.02.2007 Beiträge: 53
|
Verfasst am: 08.02.2007, 10:40 Titel: compilieren geht aber .... |
|
|
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 ?
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 08.02.2007, 10:43 Titel: |
|
|
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 |
|
 |
tom_verbatim
Anmeldungsdatum: 03.02.2007 Beiträge: 53
|
Verfasst am: 08.02.2007, 10:55 Titel: |
|
|
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
| Code: |
Public Declare Sub FunktionInLib Lib "c:\neudll.dll" (text As String)
|
|
|
| Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 08.02.2007, 12:16 Titel: |
|
|
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 |
|
 |
tom_verbatim
Anmeldungsdatum: 03.02.2007 Beiträge: 53
|
Verfasst am: 08.02.2007, 14:55 Titel: geht aber... |
|
|
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 |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 08.02.2007, 15:18 Titel: |
|
|
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 08.02.2007, 15:21 Titel: |
|
|
'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 |
|
 |
tom_verbatim
Anmeldungsdatum: 03.02.2007 Beiträge: 53
|
Verfasst am: 08.02.2007, 15:32 Titel: neeneenee |
|
|
@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
gruß tom |
|
| Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 08.02.2007, 16:42 Titel: |
|
|
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 |
|
 |
Xardas
Anmeldungsdatum: 17.09.2006 Beiträge: 23
|
Verfasst am: 08.02.2007, 19:35 Titel: |
|
|
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 |
|
 |
tom_verbatim
Anmeldungsdatum: 03.02.2007 Beiträge: 53
|
Verfasst am: 08.02.2007, 19:51 Titel: |
|
|
@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 |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 08.02.2007, 19:51 Titel: |
|
|
Wieso denn das?
Es ist doch ein eigenständiges Fenster, und die HWnd-Variable wird sich schon nicht überschreiben. Oder? |
|
| Nach oben |
|
 |
tom_verbatim
Anmeldungsdatum: 03.02.2007 Beiträge: 53
|
Verfasst am: 08.02.2007, 20:10 Titel: häääääääääää???? |
|
|
@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 |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 08.02.2007, 21:58 Titel: |
|
|
Jo, des is ganz einfach, da ich früher in Profan programmiert hab
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 ), 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
//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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 08.02.2007, 22:36 Titel: |
|
|
| 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. |
| PMedia hat Folgendes geschrieben: | | Ich wollt schon längst ne Include für FB schreiben, war bisher aber immer zu faul. | ... 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 |
|
 |
|