Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
hitech
Anmeldungsdatum: 29.11.2011 Beiträge: 5 Wohnort: Schwäbisch Gmünd
|
Verfasst am: 29.11.2011, 12:18 Titel: Rückgabe von logischen Werten aus API-Funktionen |
|
|
Hallo zusammen,
wenn ein API-Funktion einen logischen Rückgabewert besitzt, wie muss ich den Rückgabewert deklarieren?
die Api-Funktion lautet:
dim library as any ptr
dim Connected as function(byval operand1 as integer) as ?????
ich habe es mit integer und auch mit Bitfeld versucht, bekomme bei integer aber kein Ergebnis außer 0, bei Bitfeldern bekomme ich ein Fehlermeldung des Compilers.
ich bin neu hier in Freebasic, da ich normalerweise in Alaska Xbase++ programmiere. Ein Schulprojekt meines Sohnes muss aber in Freebasic programmiert werden.
Für Eure Hilfe vielen Dank im Voraus
Uli |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4701 Wohnort: ~/
|
Verfasst am: 29.11.2011, 13:12 Titel: |
|
|
Ich kenne jetzt die spezielle Funktion nicht, aber an sich ist die Wahl eines INTEGERs schon richtig. Die Rückgabe wäre dann (normalerweise) 0=false oder -1=true. Im Zweifelsfall kannst du auch in der entsprechenden Header-Datei nachsehen (enden unter FreeBASIC auf .bi); bei den WinAPI-Funktionen wird man da wegen der vielen einzelnen Headers aber leider ein wenig suchen müssen. Sie befinden sich im Ordner <FreeBASIC-Installationspfad>/inc/win _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
hitech
Anmeldungsdatum: 29.11.2011 Beiträge: 5 Wohnort: Schwäbisch Gmünd
|
Verfasst am: 29.11.2011, 13:32 Titel: |
|
|
Hallo, danke für die Antwort.
wenn ich den Rückgabewert als integer deklariere bekomme ich beim aufruf der Funktion
dim connect as integer = connected(0) für Kartenadresse 0
immer den Wert 0 als Rückgabe, obwohl die Karte eindeutig connected ist.
Eine Header-Datei existiert nicht.
Auch die folgende Vorgehensweise funktioniert nicht, wenn ich den Rückgabewert als Bitfeld deklariert habe
if connected(0) then oder if connected(0)=1 then
connect=1
endif
Hier bekomme ich schon den Compilerfeher.
Bin für jede weitere Hilfe dankbar
Uli |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4701 Wohnort: ~/
|
Verfasst am: 29.11.2011, 13:44 Titel: |
|
|
Zitat: | Eine Header-Datei existiert nicht. |
Irgendwoher muss der Compiler die Funktion connected aber kennen, das heißt, irgendwo muss sie deklariert sein.
Weil ich gerade sehe, dass das unter "Allgemeine Fragen zu QBasic" steht, du aber im Eingangspost über FreeBASIC geschrieben hast - was von beiden ist jetzt richtig? Unter QBasic müssen Variablen nämlich nicht vorher deklariert werden, d. h. es könnte sein, dass connected(0) als neu anzulegende Variable (bzw. Array) interpretiert wird und dann natürlich den Wert 0 zugewiesen bekommt. Unter FreeBASIC kann das nicht passieren, weil der Compiler rechtzeitig meckert; außer wiederum du verwendest so etwas wie die Dialektform -lang qb oder so.
Zitat: | Hier bekomme ich schon den Compilerfeher. |
In diesem Fall bitte die Fehlermeldung dazu posten, dann können wir eher helfen.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
hitech
Anmeldungsdatum: 29.11.2011 Beiträge: 5 Wohnort: Schwäbisch Gmünd
|
Verfasst am: 29.11.2011, 14:39 Titel: |
|
|
Sorry, ist mir nicht aufgefallen, dass ich im falschen Forum bin. Muss natürlich unter Freebasic sein. Ich werde die Frage dort stellen.
Danke |
|
Nach oben |
|
 |
|