 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 04.07.2006, 19:08 Titel: |
|
|
Zitat: | Es sollte aber eigentlich auch eine .DLL erstellt werden... |
wenn in der Deklaration für die dll der Hinweis auf eine Lib <Namen> fehlt Code: | ... lib "mydll_" ... | wird keine DLL erstellt. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 19:41 Titel: |
|
|
ich bekomme beim kompilieren einen fehler:
D:\FreeBasic\bin\win32\ld.exe: cannot find -lprog
was machen?
der zusammengesetzte code siht so aus:
Code: |
declare Function CheckMousePos Lib "Prog" alias "CheckMousePos" (x, y, Xmin, Xmax, Ymin, Ymax)
Function CheckMousePos(x, y, Xmin, Xmax, Ymin, Ymax)
Select Case x
Case Xmin To Xmax
Select Case y
Case Ymin To Ymax
Return 1=1
'if I wanted to return a value<>0 I would have written 1..
'..but I wanted to return a value that is TRUE :D
End Select
End Select
Return 1=0 's.a. 1=0 is definitly FALSE ;)
End Function
|
_________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 04.07.2006, 19:53 Titel: |
|
|
die funktion hat keine deklaration "as integer extern"
die übergebenen Variablen auch nicht....
nehm meinen Quellcode und ersetze 'mydll_' mit 'prog' ... _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 20:18 Titel: |
|
|
so?
Code: |
declare function CheckMousePos lib "prog_" _
alias "CheckMousePos" (byval x as integer, byval y as integer, _
byval Xmin as integer, byval Xmax as integer, _
byval Ymin as integer, byval Ymax as integer) as integer
Function CheckMousePos(byval x as integer, byval y as integer, _
byval Xmin as integer, byval Xmax as integer, _
byval Ymin as integer, byval Ymax as integer) as integer export
Select Case x
Case Xmin To Xmax
Select Case y
Case Ymin To Ymax
Return 1=1
'if I wanted to return a value<>0 I would have written 1..
'..but I wanted to return a value that is TRUE :D
End Select
End Select
Return 1=0 's.a. 1=0 is definitly FALSE ;)
End Function |
gibt immer noch den selben fehler
ich möcht euch ja nicht ständig nerven, gibts da kein tutorial? _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 04.07.2006, 20:56 Titel: |
|
|
Wenn du die beiden Zusätze 'lib "prog" ' und 'export' erst mal nicht beachtest, ist das eine einfache Function (mit der Deklaration, die ja normalerweise am Anfang eines Progs steht).
Allerdings sind die Variablen genau vom Typ her (integer) und von der Art der Variablenübergabe (byval) definiert (die Function selbst auch).
Das sagt dem Compiler genau wieviel Speicherplatz er dafür reservieren oder übergeben muss.
Der 'export' Zusatz sagt ihm, das das Ergebnis nicht im gleichen Programm (DLL) sondern von einem 'weiter entfernten' Programm angefordert wird.
Der Zusatz 'lib "prog" ' wird, wenn der Compiler die Anweisung "mach eine DLL daraus" erhält, genutzt den Name für die DLL (prog.dll) zu setzen.
Das ist recht grob erklärt, aber mehr braucht man für eine kleine DLL nicht.
Mensch, das Viertelfinale läuft ja schon.... _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 21:12 Titel: |
|
|
ich hab die function ein bissel abgeändert:
Code: |
function checkmouse(x, y, xmin, xmax, ymin, ymax)
dim hit as integer
select case x
case xmin to xmax
select case y
case ymin to ymax
hit=1
end select
end select
checkmouse=hit
end function
|
dann kann man doch mit
Code: |
if CheckMousePos(x, y, 615, 640, 0, 27) =1 then
'blablabla
|
abfragen od die maus ueber einem beeich war. Warum klappt es nicht? Gibt immer einen Fehler. _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Zuletzt bearbeitet von alfonsospringer am 04.07.2006, 22:53, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.07.2006, 21:37 Titel: |
|
|
die funktion ruft sich ständig selbst auf und kommt nie wieder zu einem ende, irgendwann sagt der pc halt dass ihm das zu viel wird. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 21:55 Titel: |
|
|
aber ich frag doch nur einmal ab, ausserdem ist der fehler, dass sich das programm nicht kompilieren laesst weil er mit der if anweisung unzufrieden ist _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.07.2006, 22:23 Titel: |
|
|
schau mal
du rufst die funktion auf.
in der zweiten zeile in der funktion rufst du sie wieder auf, nochmal von vorne sozusagen
dann in der zweiten zeile ruft sich die funktion zum dritten mal selbst auf, wieder von vorne
das hört nie auf..
und das if stimmt nicht, weil du die letzte zahl vergessen hast  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 22:52 Titel: |
|
|
oops das war nicht beabsichtigt. Ist's so besser ? _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 22:58 Titel: |
|
|
ich weiss es nervt, aber bitte schritt fuer schritt. wie mache ich hierraus eine DLL?
Code: |
function checkmouse(x, y, xmin, xmax, ymin, ymax)
dim hit as integer
select case x
case xmin to xmax
select case y
case ymin to ymax
hit=1
end select
end select
checkmouse=hit
end function
|
danke fuer euer Verstaendnis und den Zeitaufwand _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.07.2006, 23:20 Titel: |
|
|
besser wobei ichs direkt noch n bisschen anders machen würde:
Code: | function checkmouse(x, y, xmin, xmax, ymin, ymax)
return not (x < xmin or x > xmax or y < ymin or y > ymax)
end function |
funktioniert genauso, ich finds nur schöner
die nicht-lib-variante wäre einfach n kleines makro:
Code: | #define checkmouse(x, y, xmin, xmax, ymin, ymax) (not (x < xmin or x > xmax or y < ymin or y > ymax)) |
wäre die methode, die am schnellsten arbeiten würde weil der entsprechende code einfach an den stellen immer eingesetzt würde, für eine zeile brauch man eigentlich nicht gleich ne ganze funktion anlegen. Die zeile da oben könntest du einfach in ne .bi reinschreiben, brauch keine lib, die .bi reicht, und arbeitet schneller als die anderen..
wie man aber aus der funktion ne lib machen würde darf dir jemand anderes erklären, das weiß ich nämlich nich ;p _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 05.07.2006, 11:25 Titel: |
|
|
Code: | return not (x < xmin or x > xmax or y < ymin or y > ymax) |
den Teil versteh ich leider nicht. Wie funtionierts?
muss man dann "#include xxx.bi" an den anfang des programmes packen? Kann ich das auch mit einer funktion machen? Wird eine .bi kompilert oder nur gespeichert wie ne .bas? _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 05.07.2006, 12:31 Titel: |
|
|
o.k. das mi der .bi funkt aber es würde mich trotzdem noch interessieren, was es nun mit den dlls auf sich hat _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 05.07.2006, 12:47 Titel: |
|
|
alfonsospringer hat Folgendes geschrieben: | Code: | return not (x < xmin or x > xmax or y < ymin or y > ymax) |
den Teil versteh ich leider nicht. Wie funtionierts? |
naja ganz einfachm, ich mach vier prüfungen ob der zeiger außerhalb des gegebenen bereichs ist - wenn nicht kommt 0 raus, wenn ja (-1) - und mit NOT dreht sich das ganze dann um, sprich (-1) wenn er nirgends außerhalb (und damit innerhalb) ist und 0 wenn er irgendwo außerhalb ist.
-1 und 1 sind bei IF gleichbedeutend, 0 ist nein und alles andere ist ja, -1 ist eben die zahl, die freebasic für ja benutzt, jede andere zahl außer 0 geht aber genauso. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 05.07.2006, 13:16 Titel: |
|
|
aha _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 05.07.2006, 17:53 Titel: |
|
|
zur Information:
Ich verarbeite die Infos und fasse sie auf http://de.wikibooks.org/wiki/FreeBasic:_DLL Zusammen.
Zitat: | muss man dann "#include xxx.bi" an den anfang des programmes packen? Kann ich das auch mit einer funktion machen? Wird eine .bi kompilert oder nur gespeichert wie ne .bas? |
Das wird Copy and Paste eingebaut, was in der Bi Datei steht wird behandelt es sei es in der Bas Datei.
Zitat: | ich weiss es nervt, aber bitte schritt fuer schritt. wie mache ich hierraus eine DLL? |
Erst mal ein Export dran und die Funktion definieren.
(auf eine etwas Spezielle art)
Code: | declare function checkmouse lib "DLLName" alias "checkmouse" (x, y, xmin, xmax, ymin, ymax)
function checkmouse(x, y, xmin, xmax, ymin, ymax) export
dim hit as integer
select case x
case xmin to xmax
select case y
case ymin to ymax
hit=1
end select
end select
checkmouse=hit
end function |
dann mit -dll kompilieren.
(Genau so wie man mit -s gui arbeitet einfach statt -s gui mit -dll)
Jetzt das -dll wieder raus, sonst gibt es ärger.
Zum eigentlichen Programm:
Code: | dim x
dim y
declare function checkmouse lib "DLLName" alias "checkmouse" (x, y, xmin, xmax, ymin, ymax)
screen 12
line(20,20)-(40,40),15,bf
do
getmouse x,y
if checkmouse(x,y,20,40,20,40) then end
loop |
(noch nicht getestet)
Edit://
So, hatte noch kleine Fehler drinn.
DLLName ist natürlich noch zu ersetzten.
Mensch, (indirekt) dank dir wachst das Wikibook über Freebasic recht schnell , _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 05.07.2006, 20:01 Titel: |
|
|
das fasse ich als kompliment auf...ich halte euch auf trapp _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
 |
|
|
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.
|
|