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:

fragen zu 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
synack



Anmeldungsdatum: 14.08.2005
Beiträge: 2

BeitragVerfasst am: 14.08.2005, 17:17    Titel: fragen zu freebasic Antworten mit Zitat

Hallo, zu allererst möchte ich sagen das ich ein totaler Anfänger in BASIC bin, d.h. ich kann auch nicht QB.
Ich will mich jetzt aber aus Spass an der Sache in FB einarbeiten und teste einige Sachen aus.

Zudem muss ich sagen das ich bisher nur mit Java und C Sharp gearbeitet habe, also objektorientiert. In FB ist woll keine OOP möglich, das ist auch mein erstes Problem, ich denke immer objektorientiert.
In Java und C Sharp hat man immer mehere Klassen, dies sorgt auch für eine bessere Übersicht. Wie ist das in FB, kann ich da wenigstens mein Programmcode strukturiert in meheren Dateien speichern (quasie Objektbasieren)?

Um mich in FB einzuarbeiten teste ich gerade einfach ein bischen rum und schau mir die Beispiele die bei FB dabei sind an. Dabei werden oft DLL's eingebunden. Ich kenn mich in C und C++ auch nicht so gut aus und in einbinden von DLL's erst recht nicht. Jetzt bin ich bei ein Beispiel von Allegro angekommen.
Mir ist schonmal klar das man eine Funktion vorher deklarieren muss, auch wenn sie in eine DLL steckt. Jetzt kann man aber *.bi Dateien einbinden in denen schon alle Deklarationen drin sind. Doch ich habe festgestellt das in der beiliegenden allegro.bi nicht alle Funktionen drin stehen.
Nun dachte ich mir deklariere sie selber, aber da komme ich zur nächsten Frage. Wie binde ich diese Funktion ein:

FONT *load_bitmap_font(const char *filename, RGB *pal, void *param)

Was mich auch noch interessiert gibt es ein Datentyp char ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 14.08.2005, 18:43    Titel: Antworten mit Zitat

Oh je... wenn es eine Sache gibt, die schwieriger ist, als eine neue Programmiersprache zu lernen, dann von einer objektorientierten umzusteigen...

Das erste, was du tun solltest, ist: Lade dir die Befehlsreferenz herunter (wenn nicht schon geschehen)
Du findest sie hier:
http://fb.exp-soft.de/FBtuts.php?zeig=tuts&view=Referenz-Befehlsreferenz.txt

Überhaupt wird dir die Seite
www.freebasic.de
ziemlich weiterhelfen. Es gibt eine Menge tutorials. Soweit ich weiß, gibt es aber bis jetzt noch kein echtes FB-Einsteiger-Tut, halte dich also an die QBASIC-Tuts (davon gibts ne Menge auf www.qbasic.de ) FB ist 99.99% kompatibel, also sollten die dir weit helfen.

Datentypen:
Ich habe mit C/Java noch nie gearbeitet, aber soweit ich weiß, ist CHAR so etwas wie der STRING in FB (kundige Member, bitte klärt mich auf, wenn ich falsch liege) In einem STRING kannst du Zeichenketten im ASCII-Format speichern. Die Länge eines Strings kann fest oder variabel sein; sieh dir dazu den Eintrag in der Referenz an.
Außerdem sollte dich das hier interessieren:
http://fb.exp-soft.de/FBtuts.php?zeig=tuts&view=Referenz_Grundlagen-1.~Datentypen.txt
(Der Link auf Datentypen in der Ref funktioniert NOCH nicht...)

Programmcode aufspalten:
Sicher geht das, man spricht von mehreren Modulen.
Siehe dazu $INCLUDE
Oder meinst du Unterprogramme?
Siehe SUB, FUNCTION, DECLARE und
http://fb.exp-soft.de/FBtuts.php?zeig=tuts&view=Referenz_Grundlagen_Prozeduren-1.~Einleitung.txt
Wenn du willst, dass mehere Prozeduren 'nebeneinander' laufen, brauchst du THREADCREATE

Allerdings sind das... nun, leicht fortgeschrittene Themen.
Die meisten erfolgreichen imperativen BASIC-Programmierer haben bei Konsolen-Programmen angefangen (siehe PRINT, LOCATE, COLOR, INPUT)
Viel Zeit wirst du dafür nicht aufwenden müssen, da du doch schon Erfahrung in den Grundprinzipien des Programmieren hast. Die sind in OO-Sprachen die selben wie in imperativen.
Das nächste was du anfangen solltest, wären Grafik-Befehle. (SCREEN, PSET, LINE, CIRCLE, PAINT, ...)
Spätestens wenn du dich mit denen auskennst, kannst du mit Unterprogrammen anfangen (siehe die Tipps oben)

Mit dem einbinden von DLLs würde ich warten, bis du mit Unterprogrammen sicher umgehen kannst.

Hmm.... ziemlich viele Verweise, ziemlich viel zu lesen....
Ich hoffe, du verlierst den Spaß an der Sprache nicht zwinkern
However, geh einfach 'back to the roots', und bau dir irgendwas kleines auf, das du dann weiter ausbaust... so wie man jede Sprache lernt... lernen sollte *g*

Ach ja, noch was:
Zitat:
In FB ist woll keine OOP möglich, [...]

Nun, wie mans sieht... so etwas ähnliches gibts schon:
http://fb.exp-soft.de/FBtuts.php?zeig=tuts&view=WinAPI_Grundlagen-1.~Vorwort.txt
http://fb.exp-soft.de/FBtuts.php?zeig=tuts&view=WinAPI_kleines~Tutorial-1.~Einfuehrung.txt
Für einen Einsteiger in FB wohl nicht all zu leicht zu verstehen, aber zumindest ist es gewissermaßen möglich.

have a nice day
Ciao
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 14.08.2005, 20:29    Titel: Antworten mit Zitat

Zitat:
Überhaupt wird dir die Seite
www.freebasic.de
ziemlich weiterhelfen. Es gibt eine Menge tutorials. Soweit ich weiß, gibt es aber bis jetzt noch kein echtes FB-Einsteiger-Tut, halte dich also an die QBASIC-Tuts (davon gibts ne Menge auf www.qbasic.de ) FB ist 99.99% kompatibel, also sollten die dir weit helfen.


Naja mittlerweile gibts:

- Grundlagen Tutorial
- Standartgrafikbefehle in FB
_________________
www.piratenpartei.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
licer



Anmeldungsdatum: 17.05.2005
Beiträge: 51

BeitragVerfasst am: 16.08.2005, 11:26    Titel: Antworten mit Zitat

Zitat:
Ich habe mit C/Java noch nie gearbeitet, aber soweit ich weiß, ist CHAR so etwas wie der STRING in FB (kundige Member, bitte klärt mich auf, wenn ich falsch liege)


Soweit ich weiß ist der STRING in FB dem STRING in C (Java keine Ahnung) gleichzusetzen.
CHAR hingegen speichert nur einen Buchstaben. Entspricht also STRING * 1
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 16.08.2005, 12:18    Titel: Antworten mit Zitat

char ist ein Zeichen, und daher muss man in C/C++ - wenn man einen String verwenden will -
immer sowas machen:
Code:

char wort[Laenge + 1]

Das Array sollte auch immer mit "\0" abgeschlosen werden, daher das Laenge + 1

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 16.08.2005, 12:39    Titel: Antworten mit Zitat

Ah, nullterminierte Strings, was?
So was kann freeBASIC automatisch übernehmen, siehe dazu ZSTRING in der Referenz zwinkern
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
synack



Anmeldungsdatum: 14.08.2005
Beiträge: 2

BeitragVerfasst am: 16.08.2005, 13:11    Titel: Antworten mit Zitat

Erstmal danke für die Antworten. Zum Thema Char, ich wollte eigentlich wissen ob es überhaubt ein Datentyp Char gibt, in C gibt es ja keine Strings und alles wird mit Char dargestellt.
Aber in Java gibt es String und Char so das man Strings für Zeichenketten benutzt und Char für Zeichen.
Wenn ich z.B. eine Menge von Zeichen in ein Array speichern will erstelle ich in Java ein Array vom Typ Char. Wie muss ich das in FB machen, muss ich eine Array von Typ String erzeugen oder gibt es noch ein anderen Typ ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ts-soft



Anmeldungsdatum: 13.02.2005
Beiträge: 26
Wohnort: Berlin

BeitragVerfasst am: 16.08.2005, 15:21    Titel: Antworten mit Zitat

Also Char entspricht einem UByte. Es kann also die Werte von 0 -255 aufnehmen. In einigen Sprachen wird dieses UByte dann als Char bezeichnet, wenn einzelne ASCII-Zeichen darin gespeichert werden. Einen ZString kann man als Array of Char ansehen um durch die einzelnen Zeichen des Strings zu iterieren. Stringmanipulation auf Byte-Ebenen ist oftmals wesentlich schneller als die normalle Basic-Like Stringmanipulation. Man ermittelt z.B. den Pointer zum ZString und iteriert in einer For Next Schleife Zeichenweise hindurch, indem man die Adresse in der Schleife immer um 1 erhöht. Zum ausfiltern von ungültigen Zeichen für Dateinamen oder Variablennamen usw.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 17.08.2005, 11:19    Titel: Antworten mit Zitat

Naja, FB ist ein wirklicher Rückschritt von JAva und C# aus.

Naja, zur Modularisierung:
Früher wurde das mal so gemacht:
Es gibt Module (*.Bas) und Header (*.bi).

In den Modulen steht die Definition der Funktionen (Funktionen entsprechen etwa den statischen Methoden, nur das der Klassenscope fehlt und einfach alles in den globalen Scope kommt). Diese Definitionen kennt nur das Modul selbst, sonst niemand. Damit andere Module wissen, dass in einem Modul eine bestimmte Funktion definiert wurde muss man sie bekannt machen (deklarieren). Das kann man zwar in jedem Modul wiederholen, ist aber lästig und fehleranfällig. Deswegen packt man die Deklarationen in sogenannte Header. Andere Module können diese Header dann einbinden (quasi automatisiertes Copy&Paste).

--------------------
Zitat:
Erstmal danke für die Antworten. Zum Thema Char, ich wollte eigentlich wissen ob es überhaubt ein Datentyp Char gibt, in C gibt es ja keine Strings und alles wird mit Char dargestellt.

Es gibt einen Typ String, jedoch keinen dedizierten Character-Typ.

Zitat:
Aber in Java gibt es String und Char so das man Strings für Zeichenketten benutzt und Char für Zeichen. Wenn ich z.B. eine Menge von Zeichen in ein Array speichern will erstelle ich in Java ein Array vom Typ Char. Wie muss ich das in FB machen, muss ich eine Array von Typ String erzeugen oder gibt es noch ein anderen Typ ?

Strings in FB sind nicht Unicode-Codiert, sondern ASCII. Das bedeutet, dass ein Zeichen genau ein Byte einnimmt. (und nicht 2 bis vier, wie bei Javas/C#'s UTF-16 codierung.) Da das programmieren in FB recht low level ist, nimmt man es mit der typisierung nicht so genau und verwendet einfach einen Dat4entyp, der groß genug ist, um ein Zeichen abzuspeichern (UByte; vorzeichenlose Typen dürftest du von C# kennen).

----------------------------------

Zitat:
In einigen Sprachen wird dieses UByte dann als Char bezeichnet, wenn einzelne ASCII-Zeichen darin gespeichert werden.

Das sind dann aber alles ziemlich alte Sprachen. Bei modernen Sprachen hat man meistens einen Byte Typ, der eben ein Byte groß ist und ein Char Typ, der groß genug ist, um ein Unicode-Code-Point aufzunehmen (je nach Codierung also bis zu vier Byte).
_________________
Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit.
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