| 
				
					|  | 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 |  
		| Ryko 
 
 
 Anmeldungsdatum: 02.01.2013
 Beiträge: 12
 
 
 | 
			
				|  Verfasst am: 02.01.2013, 18:23    Titel: Boolean in FreeBasic ? |   |  
				| 
 |  
				| 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
   Mit Freundlichen Grüßen Ryko
 |  |  
		| Nach oben |  |  
		|  |  
		| Sebastian Administrator
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 5969
 Wohnort: Deutschland
 
 | 
			
				|  Verfasst am: 02.01.2013, 18:38    Titel: |   |  
				| 
 |  
				| Hi Ryko, 
 willkommen im Forum und in der FreeBASIC-Welt!
   
 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 |  |  
		|  |  
		| Ryko 
 
 
 Anmeldungsdatum: 02.01.2013
 Beiträge: 12
 
 
 | 
			
				|  Verfasst am: 02.01.2013, 18:48    Titel: |   |  
				| 
 |  
				| 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
  . Also schönen Abend noch
  |  |  
		| Nach oben |  |  
		|  |  
		| ytwinky 
 
  
 Anmeldungsdatum: 28.05.2005
 Beiträge: 2624
 Wohnort: Machteburch
 
 | 
			
				|  Verfasst am: 02.01.2013, 19:49    Titel: Re: Boolean in FreeBasic ? |   |  
				| 
 |  
				|  	  | 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:
 und als Schnellschuß(ungetestet)noch hinterher: 	  | Code: |  	  | Dim As Boolean b1, Yes, No, Allowed, Tool8 | 
 Wenn in diesem Code Fehler auftreten, solltest du dein Buch beiseite legen und in der deutschen Hilfe(läßt sich auch herunterladen) nachsehen.. 	  | Code: |  	  | Function IsBoolean(What As Integer) As Boolean Return IIf(What, True, False)
 End Function
 | 
 ..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
 _________________
 
 ..also ungefähr so, wie ich GOTO.. 	  | v1ctor hat Folgendes geschrieben: |  	  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 
 |  |  
		| Nach oben |  |  
		|  |  
		| St_W 
 
  
 Anmeldungsdatum: 22.07.2007
 Beiträge: 958
 Wohnort: Austria
 
 | 
			
				|  Verfasst am: 02.01.2013, 22:46    Titel: |   |  
				| 
 |  
				| 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 |  |  
		|  |  
		| dreael Administrator
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 2530
 Wohnort: Hofen SH (Schweiz)
 
 | 
			
				|  Verfasst am: 03.01.2013, 20:26    Titel: |   |  
				| 
 |  
				| 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
 
 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 |  |  
		|  |  
		|  |  
  
	| 
 
 | 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.
 
 |  |