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:

FreeBasic-Bugs
Gehe zu Seite 1, 2, 3, 4  Weiter
 
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
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.10.2005, 21:22    Titel: FreeBasic-Bugs Antworten mit Zitat

Ich habe wie's aussieht einen Bug in FreeBasic entdeckt.

Es sieht ungefähr so aus:

A$=CHR$(3)
IF A$ <> CHR$(1) then print "A$ hat nicht wert 1"
B=3
IF B <> 1 then print "B hat nicht wert 1"

tja, bei mir kam nur beim 2. if was raus, das erste scheint da was aflsch zu machen, also kommt bei mir nur raus:

B hat nicht den wert 1

und nicht

A$ hat nicht den wert 1
B hat nicht den wert 1
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eastler_dart



Anmeldungsdatum: 25.09.2005
Beiträge: 177
Wohnort: Baden-Würtemberg + Sachsen

BeitragVerfasst am: 25.10.2005, 21:40    Titel: Antworten mit Zitat

Hi.

Hab dein Beispiel mal in mein Freebasic 0.14 unter W98SE eingegeben.

Bei mir stimmt alles.

A$ hat nich den Wert 1
und B hat nicht den Wert 1

wird angezeigt.

Prüf nochmal deine Schreibweisen, Gänsefüßchen etc.

schätze dort liegt ein Tippföhler lächeln

Eastler
_________________
Kaum macht mans richtig, schon geht's
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Yahoo Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.10.2005, 21:53    Titel: Antworten mit Zitat

Wohl kaum! Der ganze Kot hat nämlich in QBasic funktioniert...

allerdings war es etwas anders, im programm war das sowas wie

player(1).isAlive=CHR(1) und so...vielleicht liegt's an meinem TYPE
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 25.10.2005, 22:41    Titel: Antworten mit Zitat

Darf ich dir die empfehlung geben, Byte zu benutzen? Is das selbe wie ein string mit einem zeichen länge (CHR$(asc)) und kann dabei aber ohne CHR$ zugewiesen werden..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 26.10.2005, 20:59    Titel: Antworten mit Zitat

Ichweiß dass es byte gibt, aber wie gesagt...mein spiel war vorher in qb geschrieben und da gab's den datentyp nicht. Da ich jetzt sowieso Integers benutze ist das viel einfacher happy
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 26.10.2005, 21:03    Titel: Antworten mit Zitat

Aber BYTE frisst weniger Speicher als INTEGER, da kannst du doch noch Performance rauskitzeln zwinkern

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



Anmeldungsdatum: 26.09.2005
Beiträge: 75
Wohnort: Adelheidsdorf

BeitragVerfasst am: 26.10.2005, 21:12    Titel: Antworten mit Zitat

FB 0.15b CVS 2005-10-26 führt das o.g. Beispiel ebenfalls korrekt aus. Kannst du bitte uns ein vollständiges Beispiel zeigen wo dieser Vergleich fehl schlägt und welche Compiler-Version auf welcher Plattform du benutzt?

Danke.

Gruß,
Mark
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 26.10.2005, 21:13    Titel: Antworten mit Zitat

Die Arbeit mit den 4 Byte Datentypen INTEGER und LONG geht schneller als mit BYTE und SHORT. Das ist der Grund, weshalb ein INTEGER nicht mehr 2 Bytes wie in QB lang ist, sondern genauso groß ist wie LONG aus QB-Zeiten.
_________________

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
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 27.10.2005, 10:42    Titel: Antworten mit Zitat

Zitat:
Aber BYTE frisst weniger Speicher als INTEGER, da kannst du doch noch Performance rauskitzeln

Normalerweise ist es immer andersherum: Entweder schnell und speicherhungrig oder langsam uns sparsam. Auch in diesem Fall ist es wieder so, da wir uns in einer 32Bit Umgebung befinden. 32Bit ist die natürliche Größe.
_________________
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
tilli



Anmeldungsdatum: 10.09.2005
Beiträge: 73

BeitragVerfasst am: 27.10.2005, 20:09    Titel: Antworten mit Zitat

Moin,

Das ist schon richtig, dass die CPU in der Lage ist, auf ein Quad (4Bytes = Interger auf 32Bit Rechnern) schneller zuzugreifen, da es sich sonst ein Quad holen muss und - insofern es nicht das erste von 4 bytes ist - durch Rotation oder ähnlichem (auf gut deutsch ein Schritt mehr) diese Byte zum Zugriff zurechtzulegen.
AAABER
Wenn es sich um große Felder handelt (hier sicher nicht, wenn mit Player(1) gearbeitet wird) dann kommt irgendwan mal der Cache in's Spiel.
Problematischer als das Auslesen dürfte Nebenbeigesagt das Abspeichern sein - da muss das Quad geholt, das Byte aktualisiert werden und dann das Quad wieder gespeiuchert werden.
AAABER
Wenn es sich um ein Type handelt ( Player(x)"."is_alife), dann ist es auch möglich einen Bitcheck durchzuführen und es als Bitflag laufen zu lassen - heirfür gibt es wiederum eine Hardware-Befehl. Und in dem Bitfeld können dann auch andere Bits untergebracht werden. Das spart Speicher und kostet(fast) keine Performance.
Ein weiteres muss man dabei immer noch sehen: auch der Programmcode ist Speicher - und wenn der zu lang wird (z.B. durch Vergleich mit festen Variablen statt mit einem Byte, dann muss der Cache wieder mehr arbeiten.
Alles in allem scheint es sich aber hier ohnehin 'nur' um einen Hochsprachenode zu hadeln, der 20-30 Mal ind er Sekunde abgefragt wird. Optimierunge lohnen da nicht wirklich.

CU2
Tilli
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

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

hm...ich bleib bei integers grinsen


das beispiel hab ich ejtzt nimmer komplett,da ich es ja übersetzt habe...
es war sowas wie

PLayer(1).IsAlive=CHR(1)

....

if Player(1).IsAlive=CHR(1) then Print "chr lebend" else print "chr tot"
if asc(Player(1).IsAlive)=1 then Print "asc lebend" else print "asc tot"

rauskam dann
chr tot
asc lebend

ich habe die aktuelle version von freeBasic
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
mjs



Anmeldungsdatum: 26.09.2005
Beiträge: 75
Wohnort: Adelheidsdorf

BeitragVerfasst am: 27.10.2005, 23:42    Titel: Antworten mit Zitat

Als was war "IsAlive" deklariert?

Gruß,
Mark
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
holger_b71



Anmeldungsdatum: 14.09.2005
Beiträge: 12

BeitragVerfasst am: 28.10.2005, 17:06    Titel: CHDIR-Bug??? Antworten mit Zitat

Hallo,

habe gerade festgestellt, das der ChDir-Befehl von FB
unter WinXP nicht funktioniert.

Gibt's da schon Erfahrungen/WorkArounds?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 28.10.2005, 17:23    Titel: Antworten mit Zitat

workaround -> SHELL "cd "+verzeichnis$
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mjs



Anmeldungsdatum: 26.09.2005
Beiträge: 75
Wohnort: Adelheidsdorf

BeitragVerfasst am: 28.10.2005, 18:23    Titel: Re: CHDIR-Bug??? Antworten mit Zitat

holger_b71 hat Folgendes geschrieben:
Hallo,

habe gerade festgestellt, das der ChDir-Befehl von FB
unter WinXP nicht funktioniert.

Gibt's da schon Erfahrungen/WorkArounds?


Welche Version? Und was bedeutet "nicht funktioniert"? Fehlermeldung? Welchselt der Befehl nicht in das Verzeichnis, bzw. nicht zum entsprechenden Laufwerk?

BTW: Wenn du auch auf ein anderes LAUFWERK wechselm möchtest, solltest du folgendes machen:

Code:
sub my_chdir(path as string)
  if mid$(path,2,1)=":" then chdir left$(path,2)
  chdir path
end sub


EDIT: Dass CHDIR nicht das Laufwerk wechselt, sobald zusätzlich zur Laufwerks-Angabe auch ein Pfad angegeben ist, wurde der QB-kompatibilität wegen so implementiert.

Gruß,
Mark
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.10.2005, 21:18    Titel: Antworten mit Zitat

IsAlive wurde als STRING*1 deklariert.... arbeitet Fb vielleicht mit unicode wodurch es string*2 sein müsste?




acuh ein bug: wenn ich einen grafikmodus im vollbild starte, und dann zur ide zurückkehre, dann ist das code-feld voller gradfikfehler und keine schrift ist zu erkennen. wenn ich dann z.B. f4 drücke, geht's wieder..... (ich habe eine riva TNT graka)

noch 2 fragen:
1) kann ich das dos-fenster bei einer anwendung wegbekommen? Mein spiel soll eigneltich nur das grafikfenster aufrufen. als ich BEedit verwendet habe(die ersatz-ide), konnte man das einstellen.

2) Wieso sind alle examples, die ich kompiliere, viel kleiner als meine eigenen exe, obwohl sie viel mehr code enthalten?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
holger_b71



Anmeldungsdatum: 14.09.2005
Beiträge: 12

BeitragVerfasst am: 28.10.2005, 21:20    Titel: ChDir-Bug!?!? Antworten mit Zitat

Hallo,

erstmal Danke für die schnelle Antwort!

Ich verwende FB 0.14 und das Problem liegt bei ChDir.
Das Programm bricht kommentarlos ab, selbst ein
simples ChDir "\" führt zum Abbruch.

Ein > SHELL "cd "+verzeichnis$ < bringt nichts,
da der Verzeichniswechsel nur für die Instanz des
SHELL-Befehls gewechselt wird (jedoch nicht für
das laufd. Programm).

H.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.10.2005, 21:26    Titel: Re: ChDir-Bug!?!? Antworten mit Zitat

holger_b71 hat Folgendes geschrieben:
Hallo,
Ich verwende FB 1.4 und das Problem liegt bei ChDir.
H.


du meinst wohl 0.14?


Edit: Du hasts ja anscheindend schon korrigiert
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 28.10.2005, 21:30    Titel: Antworten mit Zitat

Hallo!

@Jojo:

Bei deutscher Sprache gehst du zum Abschalten des DOS-Fensters wie folgt vor: Ansicht->Einstellungen->Compiler->Parameter-> <fbc> <filename> -s gui

Bei englischer Sprache soweit ähnlich! zwinkern

Greetings,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.10.2005, 21:41    Titel: Antworten mit Zitat

ich hab auf deutsch geschaltet lächeln
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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
Gehe zu Seite 1, 2, 3, 4  Weiter
Seite 1 von 4

 
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