Ahoj.
Jak lze ve VB6 co nejjednodušeji stáhnout obrázek z netu na disk ?
Příspěvky odeslané z IP adresy 86.49.74.–
#3 remmidemmi
Pro jistotu jsem si svoje řešení vyzkoušel. Kdysi dávno jsem si složitější algoritmy otestoval nejdřív ve VB6 a pak je následně přepsal do assembleru.
Takže takto vypadá kód ve VB6.
Option Explicit
Private Sub Command1_Click()
Dim a As Byte
Dim x As Long
Dim z As Long
Dim c As Long
Dim i As Byte
Dim BCD(10) As Byte
z = 2147483647 ' toto číslo převedeme do BCD (max. kladné číslo typu Long)
Print "vstupní číslo = "; z
Do
a = 0
c = 0
For x = 30 To 0 Step -1
a = a + a
c = c + c
If (z And (2 ^ x)) > 0 Then 'test x-tého bitu
a = a + 1
End If
If a > 9 Then
c = c + 1
a = a - 10
End If
Next x
BCD(i) = a
i = i + 1
z = c
Loop While c > 9
If c > 0 Then ' nulu na začátku není potřeba zapsat
BCD(i) = c
Else
i = i - 1
End If
Print "vysledek = ";
For c = i To 0 Step -1
Print BCD(c);
Next c
Print
End Sub
V assembleru bych neměl problém celý kód přepsat tak, aby všechny proměnné byly typu byte, tedy v podstatě si vystačím s 8-bitovou aritmetikou
Pro remmidemmi: jak jsi to vyřešil ty ?
Ahoj
Dnes nechci radu, spíš to bude vánoční soutěžní úkol :-)
Vyzkoušejte si jak fungují reálná čísla v počítači.
Zvolíme datový typ Double.
Dim a As Double
Dim b As Double
Dim c As Double
Do proměnné a uložíme hodnotu 0,1
a = 0.1
Proměnná b bude obsahovat tento jednořádkový výpočet
b = (a * a) / a
Proměnná c bude obsahovat stejný, ale dvouřádkový výpočet
c = a * a
c = c / a
Nyní si necháme zobrazit oba výsledky
Print b, c
No sláva, objeví se 0,1 a 0,1
Ale pozor, zkusíme odečíst b od c - výsledek by měl být nula, ale ...
Print b - c
Rozdíl je -1,38777878078145E-17
Tak co, dámy a pánové, kde je problém ?