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:

Boolean in FreeBasic ?

 
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
Ryko



Anmeldungsdatum: 02.01.2013
Beiträge: 12

BeitragVerfasst am: 02.01.2013, 19:23    Titel: Boolean in FreeBasic ? Antworten mit Zitat

Hallo FreeBasic Community,
Ich bin neu hier im Forum und auch neu in FreeBasic.Ich komme eigentlich von VB.Net,aber dennoch zieht es mich zu FreeBasic.Da es in FreeBasic ja noch keine vordefinierte Klassen(wie in VB.net z.B. Process Klasse etc.) gibt,wollte ich mich wenn ich schon mit FB anfang gleich mal mit der WinApi ausseinander setzten und habe mir dazu auch gleich ein Buch dafür gekauft(Beispiele sind in C++,sind aber einfach umzuschreiben).Jedoch gibt z.B. die DeleteFile() Methode ein Boolean zurück aber wie ich gesehen hab gibt es den DatenTyp in FB (noch) nicht?Wie würde man denn die DeleteFile Methode sonst aufrufen?

Edit:/ scheint irgendwie doch zu gehen^^

Code:
Dim bSucces As Boolean = DeleteFile(ExistingFile)

If bSucces = TRUE Then
   
   Print "Erfolgreich"
Else
   Print "Nicht Erfolgreich"
EndIf


Hoffe ihr könnt mir da Helfen lächeln
Mit Freundlichen Grüßen Ryko
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 02.01.2013, 19:38    Titel: Antworten mit Zitat

Hi Ryko,

willkommen im Forum und in der FreeBASIC-Welt! zwinkern

FreeBASIC bietet zwar keine Klassenbibliothek wie .net-Sprachen oder Java, hat dafür aber viele grundlegende Funktionen bereits als Befehle im Sprachumfang. Beispielsweise zum Löschen, Bearbeiten, Umbenennen, ... von Dateien benötigst du weder Klassen noch WinAPI-Funktionen. Die nötigen Befehle gehören einfach schon zum Standard-"Wortschatz" von FB.

Zum Löschen einer Datei verwendet man daher normalerweise den KILL-Befehl (siehe Befehlsreferenz).

Grundsätzlich kann man auch alles mögliche mit WinAPI-Aufrufen selber erledigen. Das hat aber natürlich den Nachteil, dass sich dein Programm dann unter Linux nicht mehr compilieren und ausführen lässt. Wenn du hingegen FreeBASICs eigenen KILL-Befehl verwendest, geht das auf allen Plattformen, auf denen FreeBASIC läuft.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Ryko



Anmeldungsdatum: 02.01.2013
Beiträge: 12

BeitragVerfasst am: 02.01.2013, 19:48    Titel: Antworten mit Zitat

Hallo Sebastian,
Erstmal Danke für die Antwort.Ich weis schon von den vordefinierten Befehlen bei FB aber ich bin eben dabei dieses Buch abzuarbeiten und versuche dann eben von C++ auf Fb zu übersetzen und ich konnte irgendwie keinen Boolean Datentyp finden deshalb die Frage lächeln.
Also schönen Abend noch lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 02.01.2013, 20:49    Titel: Re: Boolean in FreeBasic ? Antworten mit Zitat

Ryko hat Folgendes geschrieben:
..Jedoch gibt z.B. die DeleteFile() Methode ein Boolean zurück aber wie ich gesehen hab gibt es den DatenTyp in FB (noch) nicht?Wie würde man denn die DeleteFile Methode sonst aufrufen?..

Was macht ein (vbxyz-)Programmierer, wenn es für sein Problem keine Lösung gibt?
Er schreibt sie sich selber:
Code:
Type Boolean
  As Byte 'sinnvoller wäre allerdings Integer
End Type

Damit wäre dann möglich:
Code:
Dim As Boolean b1, Yes, No, Allowed, Tool8
und als Schnellschuß(ungetestet)noch hinterher:
Code:
Function IsBoolean(What As Integer) As Boolean
  Return IIf(What, True, False)
End Function
Wenn in diesem Code Fehler auftreten, solltest du dein Buch beiseite legen und in der deutschen Hilfe(läßt sich auch herunterladen) nachsehen..
..und wenn du schon mal auf dem FB-Portal bist, könntest du dich dort auch mal umschauen.
Gerade für Neulinge sollte egtl. immer etwas Interessantes zu finden sein^^
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 02.01.2013, 23:46    Titel: Antworten mit Zitat

Wie du bemerkt hast, gibt es in FreeBasic keinen "bool" bzw Boolean Datentyp - genauso wie in C (nicht jedoch C++).

Die WinAPI ist für C ausgelegt und wenn du genau in der Dokumentation von DeleteFile nachschaust, wirst du feststellen, dass dort nicht "bool", sondern "BOOL" als Rückgabewert angegeben ist (man beachte, dass Groß/Kleinschreibung in C/C++ beachtet wird und dies zwei verschiedene Bezeichner sind).

Wie schon gesagt, gibt es in C keinen bool; aber man kann sich einen "BOOL" definieren - und genau dies geschieht in der "windef.h" (bzw. "windef.bi" für FreeBasic) (Auszug):
Code:
typedef int     BOOL;

#ifndef FALSE
#define FALSE               0
#endif

#ifndef TRUE
#define TRUE                1
#endif

Ebenso werden hier (falls noch nicht anderswo definiert) "TRUE" und "FALSE" definiert. Wie du siehst entspricht FALSE dem Wert 0. Alle Werte ungleich 0 sind üblicherweise TRUE; dies kann man jedoch mit Integer Datentypen nicht so definieren, wodurch man hier einfach TRUE mit 1 definiert.

Wie du siehst kann FALSE exakt definiert werden - TRUE hingegen nicht. Und da die Beschreibung von DeleteFile TRUE so auffasst, wie ich vorhin erklärt habe:
MSDN Referenz hat Folgendes geschrieben:
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero (0).


Darum wäre es besser wenn du nicht auf "bSucces = TRUE" prüfen würdest, sondern stattdessen auf "bSucces <> FALSE", da bSucces ja nur ungleich 0 sein muss, jedoch nicht unbedingt den Wert "1" haben muss.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 03.01.2013, 21:26    Titel: Antworten mit Zitat

FreeBasic "missbraucht" wie praktisch alle BASIC-Dialekte Integer als Boolean. Dabei gelten alle Werte <> 0 (vorzugsweise -1) als TRUE, 0 selber als FALSE.

Am besten
Code:
Const FALSE As Integer = 0
Const TRUE As Integer = Not FALSE

verwenden.
Und übrigens genügt
Code:
If bSuccess Then

anstelle von
Code:
If bSuccess = TRUE Then

Letzteres ist wie der "weisse Schimmel", also unnötiger Vergleich, da IF .. THEN bekanntlich Boolean (bzw. als Boolean genutzter Integer) selber erwartet.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
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
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