Integer divided by Zero :S

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ozzi789

Betreff: Integer divided by Zero :S

BeitragMo, Dez 24, 2007 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Ich denke der Code is selbst klärend ...
Doch wieso bekomm ich ne Integer divided by Zero ?

MFG
Ozzi789

Code: [AUSKLAPPEN]

pfad$=Input$ ("Pfad, Bsp C:\Bilder\bild.bmp")

Test=LoadImage (pfad$)

ht =ImageHeight(Test)
wt =ImageWidth(Test)


Print wt ;64
Print ht ;32

frame=Input ("Frames")


w=wt/frame

animimages=LoadAnimImage(pfad$,w,h,0,frame)


While Not KeyHit(1)


DrawImage animimages,MouseX(),MouseY(),frame


Wend

If MilliSecs() > tmrSparks + 100 Then
tmrSparks=MilliSecs()
frame=( frame + 1 ) Mod 2
End If
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Dez 24, 2007 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil bei frame 0 eingegeben wurde? Du musst dann halt eine Abfrage rein machen. Denn Integerzahlen kann man nicht durch 0 teilen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ozzi789

BeitragDi, Dez 25, 2007 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Dafü gibts den Input ja : frame = Input ("frames")
Ich hab auch schon versucht es so zu machen

frame = 2

Dann wars immer noch das gleiche :S
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Dez 25, 2007 4:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann kommt der Fehler wohl in einer Zeile, die du hier nicht gepostet hast, denn ein ''/'' kommt in deinem Code nur einmal vor.

Folgender Code funktioniert so lange, bis ''0'' eingegeben wird.

Code: [AUSKLAPPEN]
frame=Input("Frames: ")

wt=128

w=wt/frame

Print "w="+w+"    2*w="+(2*w)

WaitKey:End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Dreamora

BeitragDi, Dez 25, 2007 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
nicht zwingend. wenn jemand so dämlich ist und zb abc eingibt wirds auch divide by zero geben weil das als int = 0 gibt
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

The_Nici

BeitragDi, Dez 25, 2007 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht liegt es daran, dass Input einen String zurückliefert?
Code: [AUSKLAPPEN]

frames=Int(Input("Frames: "))

So haben wir einen Integer.

ozzi789

BeitragDi, Dez 25, 2007 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
@ The _Nici

Danke so klappts Very Happy

Ich habs auch schon so versucht :
frame= input# ("Blub")

Danke viel mals

MFG
ozzi789
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Dez 25, 2007 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Input in Blitz ist schlau genug und macht Zahlenangaben automatisch als Integer. Eine Vorschaltung per Int macht überhaupt kein Unterschied. Einzig und allein kann Float eine Division durch 0 (in Blitz) ab.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

pixelshooter

BeitragDi, Dez 25, 2007 23:48
Antworten mit Zitat
Benutzer-Profile anzeigen
wtf?!
darf man fragen was da raus kommt?!
also du sagst a# = 1.; b# = 0.;a# / b# geht?
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

Eingeproggt

BeitragDi, Dez 25, 2007 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz schluckt das und sagt
Zitat:
Infinity
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

ozzi789

BeitragDi, Dez 25, 2007 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm......

Wenn ich mit Print (zmb) a und b raus geb kommt aba 64 32 wieso geht 64 /32 ned ? Confused


Anyway
So funkts

Doch wieso braucht der Code 80-90 % Cpu wenn der das Bildanzeigt ?
Is dat normal ?
(Das BB beispiel für Loadanimimage braucht die gleiche Leistung.)


Code: [AUSKLAPPEN]
Print "Willkomen bei AnimViewer"

pfad$=Input$ ("Pfad,Bsp C:\Bilder\bild.bmp")

Test=LoadImage (pfad$)
speed= 1200
ht =ImageHeight(Test)
wt =ImageWidth(Test)

Print wt ;64
Print ht ;32

frame=Int(Input("Frames: "))



w=wt/frame


animimages=LoadAnimImage(pfad$,w,ht,0,frame)


While Not KeyHit(1)

Text 0,0, "Change Speed of Animation with +,-"

If KeyHit(78) Then speed=speed-30
If KeyHit(74) Then speed=speed+30


Text 0,20, speed
If speed> 1500 Then speed = 1000
If speed< 50 End


If MilliSecs() > tmrSparks + speed Then
tmrSparks=MilliSecs()
frame2=( frame2 + 1 ) Mod 2
Cls

DrawImage animimages,100,100,frame2


End If


Wend


0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Dreamora

BeitragDi, Dez 25, 2007 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
64/32 = 2
wenn du allerdings statt 32 33 nimmst, gibts noch 1, denn das ist ne Int Division


Was die Leistung betrifft: das liegt daran wie du es programmiert hast. Ohne WaitTimer oder Delay wirds alle CPU Power eines einzelnen Cores abgrasen die es bekommen kann, darauf ist es ausgelegt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ozzi789

BeitragMi, Dez 26, 2007 0:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Waittimer ^^

Ach so , probier gleich ma
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Dez 26, 2007 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ozzi, als ich mir dein Code etwas genauer angeschaut hatte, sträubten sich bei mir die Haare. Ich würde an deiner Stelle generell auf folgende Dinge achten:

- Code einrücken (Wichtig!). Benutze dazu eine andere IDE als die von Blitz mitgegeben.

- Variablennamen ''richtig'' mit Groß- und Kleinschreibung benennen. Konstanten nur Groß.

- Code nicht asynchron laufen lassen, ausser bei bestimmten Dingen, die hier aber nicht zutreffen.

- Deklariere alle Deine Variablen per ql:Local oder ql:Global, damit es später keine Komplikationen gibt.

- Frage System- Variablen/Funktionen wie ql:MilliSecs(), ql:MouseX() etc. nicht immer wieder neu ab, sondern zwischenspeichere sie.

- ql:Cls gehört ins Mainloop, ausser du programmierst ein FrontBuffer-Game wie z.B. ''Snake'' (da kann es unter bestimmten...).

- Mit WaitTimer wird im folgendem Code das Programm auf 60 FPS abgebremst, somit hast du genügend Frames/Second und trotzdem erstmal so um 0-1% Prozessorauslastung. Dazu ql:Flip auf 0 stellen nicht vergessen.

Beispielstruktur:

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()
AppTitle "AnimViewer"

Print "Willkomen bei AnimViewer"

Local Timer=CreateTimer(60)

Local Pfad$=Input$("Pfad,Bsp C:\Bilder\bild.bmp")
Local Test=LoadImage(Pfad$)
Local Speed=1200
Local HT=ImageHeight(Test)
Local WT=ImageWidth(Test)

Print WT ;64
Print HT ;32

Local Frame#=Int(Input("Frames: "))
Local W=WT/Frame
Local AnimImages=LoadAnimImage(Pfad$,W,HT,0,Frame)

Local TMRSparks
Local Frame2 ;Animationsframe
Local MS ;MilliSecs()-Puffer




While Not KeyHit(1)
   
   Text 0,0, "Change Speed of Animation with +,-"
   
   If KeyHit(78) Then Speed=Speed-30
   If KeyHit(74) Then Speed=Speed+30
   
   Text 0,20,Speed
   If Speed>1500 Then Speed=1000
   If Speed<50 Then End
   
   MS=MilliSecs()
   If MS>TMRSparks+Speed Then
      TMRSparks=MS
      Frame2=(Frame2+1) Mod 2
   End If
   
   DrawImage AnimImages,100,100,Frame2
   
   WaitTimer(Timer)
   Flip 0
   Cls
Wend
End


Ist sicherlich nicht das non plus ultra, aber schonmal ein Anfang.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ozzi789

BeitragMi, Dez 26, 2007 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke viel mals , da habi wat gelernt ^
MFG
ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group