OrangeTiger
Anmeldungsdatum: 21.02.2008 Beiträge: 17
|
Verfasst am: 31.03.2008, 18:52 Titel: LZW_Decode/Encode |
|
|
Hallo,
Ich hab mal 2 Subs geschrieben...
Code: | Declare Function LZW_Encode Alias "fb_hEncode" ( _
ByVal in_buffer As Any Ptr, _
ByVal in_size As Integer, _
ByVal out_buffer As Any Ptr, _
ByRef out_size As Integer _
) As Integer
Declare Function LZW_Decode Alias "fb_hDecode" ( _
ByVal in_buffer As Any Ptr, _
ByVal in_size As Integer, _
ByVal out_buffer As ANY Ptr, _
ByRef out_size As Integer _
) As Integer
Dim Shared dest_size As Integer
Dim Shared src_size As Integer
Dim Shared i As Integer
Dim Shared LastBack As Integer
Dim Shared dest_buffer(100000) As UByte
Dim Shared src_buffer(100000) As Ubyte
Dim Shared Endung As String
Dim Shared Pfad As String
Dim Shared Dateiname As String
Sub Decompress(Datei As String)
For i = 1 To Len(Datei)
If Mid(Datei, i, 1) = "\" Then LastBack = i
Next i
For i = LastBack + 1 To Instr(Datei, ".") - 1
'DateiName = DateiName + Mid(Datei, i, 1)
Next i
For i = 1 To LastBack
Pfad = Pfad + Mid(Datei, i, 1)
Next i
dest_size = 0
Open Datei For Binary As #1
Get #1 , , Endung
While Not Eof(1)
Get #1 , , dest_buffer(dest_size)
dest_size += 1
Wend
Close #1
src_size = 100000
LZW_Decode (@dest_buffer(0), dest_size, @src_buffer(0), src_size)
Open Pfad & DateiName & "." & Endung For Binary As #1
For i = 0 To src_size -1
Put #1,, src_buffer(i)
Next i
Close #1
Kill Datei
End
End Sub
Sub Compress(Datei As String)
For i = 1 To Len(Datei)
If Mid(Datei, i, 1) = "\" Then LastBack = i
Next i
For i = LastBack + 1 To Instr(Datei, ".") - 1
DateiName = DateiName + Mid(Datei, i, 1)
Next i
For i = 1 To LastBack
Pfad = Pfad + Mid(Datei, i, 1)
Next i
src_size = 0
Open Datei For Binary AS #1
While Not Eof(1)
GET #1,, src_buffer(src_size)
src_size += 1
Wend
Close #1
dest_size = 100000
LZW_Encode (@src_buffer(0), src_size, @dest_buffer(0), dest_size)
Open Pfad & DateiName & ".img" For Binary As #1
Put #1,, Endung
For i = 0 To dest_size - 1
Put #1,, dest_buffer(i)
Next i
Close #1
Kill Datei
End
End Sub
|
Wie man auch an den Namen der beiden Subs unschwer erkennen kann sollen die Subs die übergebene Datei kompremieren/dekompremieren... aber aus irgend einem Grund gibt mir FB beim testen zwei sehr merkwürdige fehlermeldung wieder:
F:\FBIDETEMP.o:fake:(.text+0x184): undefined reference to `fb_hDecode@16'
F:\FBIDETEMP.o:fake:(.text+0x42d): undefined reference to `fb_hEncode@16'
Was ich schon rausgefunden habe ist, dass diese Fehler bei dem Aufruf der beiden Functions
Code: | LZW_Decode (@dest_buffer(0), dest_size, @src_buffer(0), src_size)
LZW_Encode (@src_buffer(0), src_size, @dest_buffer(0), dest_size)
|
entstehen. Weil wenn ich die beiden Aufrufe als Kommentar markiere funktionier alles... Aber wodran kann das liegen?
Mfg OrangeTiger |
|
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 31.03.2008, 20:02 Titel: |
|
|
Schreib am Anfang "Screen 1" hin.
Noch VOR dem Declare.
Edit:
Oder man spielt mit der Kommandozeile herum : Code: | fbc deinedatei.bas -l fbgfx | Das erspart das lästige Grafikfenster, das man eh nicht braucht, zwar verstecken kann, aber dadurch muss man nur noch mehr tippen . _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|