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:

libs in fb
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
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 04.07.2006, 19:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 19:15    Titel: Antworten mit Zitat

Ach so, das erklärt einiges...

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 19:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 04.07.2006, 19:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 20:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 04.07.2006, 20:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 21:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 04.07.2006, 21:37    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 21:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 04.07.2006, 22:23    Titel: Antworten mit Zitat

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 zwinkern
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 22:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 22:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 04.07.2006, 23:20    Titel: Antworten mit Zitat

besser happy 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 happy

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
Benutzer-Profile anzeigen Private Nachricht senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 05.07.2006, 11:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 05.07.2006, 12:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 05.07.2006, 12:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 05.07.2006, 13:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 05.07.2006, 17:53    Titel: Antworten mit Zitat

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 durchgeknallt ,
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 05.07.2006, 20:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 06.07.2006, 18:24    Titel: Antworten mit Zitat

Zitat:
das fasse ich als kompliment auf...ich halte euch auf trapp

Kannst du gerne. zwinkern

Geht der Code eigentlich?
Verstanden?
Irgendwelche Fragen?
_________________
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
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
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