Tervetuloa, vieras – 0 kirjautunutta jäsentä paikalla. – Rekisteröidy tai kirjaudu sisään.

Tämä on vain-luku-versio K-pelit-sivustosta:

  • Vanhojen tiedostojen lataaminen on mahdollista.
  • Sisältösivut ovat suurimmaksi osaksi näkyvillä.
  • (Vanha sivusto on konvertoitu lähes kokonaan staattiseksi, PHP:ta on vain pieni pätkä, tietokantaa ei ole.)

Seuraavat asiat eivät toimi:

  • Ei kirjautumista.
  • Ei viestien / uuden sisällön kirjoittamista.
  • Ei uusien tiedostojen uploadaamista.
  • Käyttäjät-sivu ei toimi.
  • Kävijälaskurien lukemat ovat vuosien takaa, eivätkä kasva.
  • Varmaan moni muukaan asia ei toimi.

Jos jotakin oleellista puuttuu/on rikki (esimerkiksi jokin sisältö/tiedosto jonka olet tänne aikoinaan lisännyt) tai haluat muuten vain tulla juttelemaan, niin j -at- jare.fi -sähköpostiosoite on sopiva kanava siihen :). Voit ottaa yhteyttä myös, mikäli haluat jonkin vanhan sisältösi poistettavan sivustolta.

T. Jare 12.3.2021.

CoolBasic: WriteBit & ReadBit

Jare
Poistunut käyttäjä
Jare

Liittynyt 2.12.2007
Ikä 32.31 v.
Kotisivut

Funktiot yksittäisten bittien kirjoittamiseen tiedostoihin ja lukemiseen.

Koodia voi vilkaista tästä tai ladata tiedoston tuosta alempaa.

//Definitions
Const FB_CRASH_ON_ERROR = 1 'This should be 1 (=True) in developing or testing applications AND 0 (=False) in production applications!

Type FileBitDetail
Field id
Field f 'Pointer To file opened by OpenToXXX() Function.
Field binary As String 'Binary value of a Byte. Length varies from 0 To 8.
Field index 'Bit index in current Byte. Used To Read bits.
EndType


//Test program
f = OpenToWrite("temp.txt")
WriteBit(f,1)
WriteBit(f,0)
WriteBit(f,1)
WriteBit(f,0)
WriteBit(f,1)
WriteBit(f,0)
WriteBit(f,1)
WriteBit(f,1)
WriteBit(f,1)
WriteBit(f,0)
WriteBit(f,1)
WriteBit(f,0)
WriteBit(f,1)
WriteBit(f,0)
WriteBit(f,1)
WriteBit(f,0)
FinishWriteBit(f)
CloseFileB(f)

f = OpenToRead("temp.txt")
For i = 1 To 16
stri$ = stri + ReadBit(f)+" "
Next i
MakeError stri
CloseFileB(f)

DeleteFile "temp.txt"


//Public functions
'Functions you need to use are located here.

Function WriteBit(f, b)
If b < 0 Or b > 1 Then
If FB_CRASH_ON_ERROR Then MakeError "WriteBit("+f+", "+b+"): Illegal binary value!" Else Return False
EndIf
fbd_id = GetFileBitDetail(f)
If fbd_id = False Then fbd_id = NewFileBitDetail(f)
fbd.FileBitDetail = ConvertToType(fbd_id)
fbd\binary = fbd\binary + Str(b)
If Len(fbd\binary) = 8 Then Return FinishWriteBit(f) 'Current Byte is full, so Write it To the file
Return True
EndFunction

Function ReadBit(f)
fbd_id = GetFileBitDetail(f)
If fbd_id = False Then fbd_id = NewFileBitDetail(f,Bin(ReadByte(f)))
fbd.FileBitDetail = ConvertToType(fbd_id)
fbd\index = fbd\index + 1
If fbd\index > 8 Then
Delete fbd
Return ReadBit(f) 'Start over; this Byte has been completely Read.
EndIf
Return Int(Mid(fbd\binary, fbd\index,1))
EndFunction

Function FinishWriteBit(f)
fbd_id = GetFileBitDetail(f)
If fbd_id = False Then
If FB_CRASH_ON_ERROR Then MakeError "FinishWriteBit("+f+"): Illegal file pointer!" Else Return False
EndIf
fbd.FileBitDetail = ConvertToType(fbd_id)
If Len(fbd\binary) = 0 Then Return True 'There is nothing To Write so Return And act like succeeded.
WriteByte f, BinToDec(fbd\binary) 'Should Write a value between 0 And 255
fbd\binary = ""
Return True
EndFunction

Function CloseFileB(f)
fbd_id = GetFileBitDetail(f)
If fbd_id = False Then
If FB_CRASH_ON_ERROR Then MakeError "CloseFileB("+f+"): Illegal file pointer!" Else Return False
EndIf
If Not FinishWriteBit(f) Then Return False
fbd.FileBitDetail = ConvertToType(fbd_id)
Delete fbd
CloseFile f
Return True
EndFunction


//Private Functions
'It is not necessary to use these functions outside this library

Function GetFileBitDetail(f)
For fbd.FileBitDetail = Each FileBitDetail
If fbd\f = f Then Return fbd\id 'Found
Next fbd
Return False 'Not found
EndFunction

Function NewFileBitDetail(f,binary="")
fbd.FileBitDetail = New(FileBitDetail)
fbd\id = ConvertToInteger(fbd)
fbd\f = f
fbd\binary = binary
Return fbd\id
EndFunction


//CBSDK functions
'Functions copied from CoolBasic Software Development Kit. The SDK does not currently have a public webpage, so please see http://www.coolbasic.com/phpBB3/ and write word CBSDK to the search engine for more information.

'BinToDec() - copied 20.6.2009 from cbMath.cb @ CBSDK
'Modifications: None
Function BinToDec(jono$) 'by Bagard
For i = Len(jono$) To 1 Step -1
arvo = Int(Mid(jono$, i, 1))
If arvo = 1 Then
luku = luku + 2 ^ (Len(jono$) - i)
EndIf
Next i
Return luku
End Function

Hakukoneiden seurantaloki

Tiedot

Lähde tai alkuperäinen tekijä
Onko tekijä mainittava?Ei
Arvosana

Tiedostot

Nimi Tiedot
LuettuTiedosto WriteBit_ReadBit.cb
(LähettäjäJare)
Lähetetty14.3.2010
Uniikit 198
Lataukset 257
[K-pelit lukuina] Kävijöitä sivulla 1009 kpl, käyntejä/sivulatauksia 2047.