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:

Rückgabe von logischen Werten aus API-Funktionen

 
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
hitech



Anmeldungsdatum: 29.11.2011
Beiträge: 5
Wohnort: Schwäbisch Gmünd

BeitragVerfasst am: 29.11.2011, 12:18    Titel: Rückgabe von logischen Werten aus API-Funktionen Antworten mit Zitat

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



Anmeldungsdatum: 22.02.2007
Beiträge: 4701
Wohnort: ~/

BeitragVerfasst am: 29.11.2011, 13:12    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 29.11.2011
Beiträge: 5
Wohnort: Schwäbisch Gmünd

BeitragVerfasst am: 29.11.2011, 13:32    Titel: Antworten mit Zitat

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



Anmeldungsdatum: 22.02.2007
Beiträge: 4701
Wohnort: ~/

BeitragVerfasst am: 29.11.2011, 13:44    Titel: Antworten mit Zitat

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. lächeln
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hitech



Anmeldungsdatum: 29.11.2011
Beiträge: 5
Wohnort: Schwäbisch Gmünd

BeitragVerfasst am: 29.11.2011, 14:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
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
Seite 1 von 1

 
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