BlitzBasic ja tiedoston luonti

Saku-foorumi » Classic Amiga » Ohjelmointi » Viestit 2004 » BlitzBasic ja tiedoston luonti « Edellinen Seuraava »

Kirjoittaja Viesti
 

JPQ
Maanantaina, 1. maaliskuuta, 2004 - klo 1.29:   
Miksei tämä koodi luo tiedostoa ?

FOsoit=WriteFile(0,"ram:tiedosto")
FileOutput 0
For lask=0 To 16383
arvo=TriWv(lask MOD 255)
Print Chr$(arvo)
Next
CloseFile 0

karsin tästä kaiken joka ei asiaan vaikuta pois. Eli neuvoja kaipaisin ja toiseksi yritin lukea taulukkoa tiedostosta sekään ei sujunut mikähän ihme tässä on.... eli esimerkki koodia ja muutakin apua kaipaisin.:)
PS. Ei muuten kamalasti väliä mutta olisi kiva kehittää ideat blitz basicilla ja kääntää kun ne toimivat ne C kielelle ja syy miksi olisi kiva on osaan BB:tä tällä hetkellä paremmin.:)
PPS. Te jotka mietitte mikä ihmeen TriWv niin se on Triangle Wave.:)

 

miksuh
Maanantaina, 1. maaliskuuta, 2004 - klo 19.33:   
No mä en tunne Blizbasic:a ollenkaan, en ole koskaan sillä tehnyt mitään, eli tämä on vain arvailua ilman mitään sen kummempaa tietoa.

Yksi asia pistää kuitenkin silmään. Rivin

Print Chr$(arvo)

olisi kai tarkoitus tulostaa arvo tiedostoon ?
Mutta ainakin muissa ohjelmointikielissä tuossa lauseessa pitäisi olla jokin tiedosto- kahva/handle/osoitin.

WriteFile() -lause palauttaa FOsoit:n, joka on kai tuommoinen kahva/osoitin avattuun tiedostoon ? Tosin sitten en ihan ymmärrä mihin tuota FileOutput 0 -lausetta käytetään...

Eli ehkä sillon jotain tämmöistä voisi olla tarvis:

Print FOsoit,Chr$(arvo) tai...
Print 0,Chr$(arvo)

En tiedä, mutta ehkä BlizBasic luo tieoston vasta kun sinne kirjoitetaan jotakin ? Tuo alkuperäinen
Print() -lause näyttää siltä kuin se tulostaisi ruudulle jotakin. Tuossa ei kerrota mihin tulostus ohjautuu, vai tekeekö toi Fileoutput sen jotenkin ?

Kuten näkyy minulla ei ole hajuakaan BlizBasicista :)

 

miksuh
Maanantaina, 1. maaliskuuta, 2004 - klo 20.00:   
Hmmm toi 0 taitaakin ola jonkinlainen filehandle BlizBasicissa, päätellen siitä, että sulla on toi 0 CloseFile-lauseessakin.

Paras kun joku muu yrittää selvittää tota :) Mä ajattelen selvästi liian C ja C++ tyylisesti :)

 

Joanna
Maanantaina, 1. maaliskuuta, 2004 - klo 20.19:   
Monissa basikeissa se oli jotenkin tyyliin...

Open #1,"file"
Print #1,"mitä sinne piti tunkea"
Close #1

Ainakaan niissä mitä minä tiedän noiden filedescien numerot alkoi ykkösestä ylöspäin, mutta eikai se kaikissa ole sama?

Alla on suora esimerkki jonka lainasin Bliz3D:n on-line ohjeista. Se lienee lähinnä mitä nyt nurkistä löytyy vaikkakin PC:n versio on kehittynyt monelta osaa niin tuskin nämä asiat ovat paljon muuttuneet.

; Changing part of a file using OpenFile, SeekFile and WriteInt

; Open/create a file to Write
fileout = WriteFile("mydata.dat")

; Write the information to the file
WriteInt( fileout, 1 )
WriteInt( fileout, 2 )
WriteInt( fileout, 3 )
WriteInt( fileout, 4 )
WriteInt( fileout, 5 )

; Close the file
CloseFile( fileout )

DisplayFile( "The file as originally written", mydata.dat" )
; Open the file and change the Third Integer

file = OpenFile("mydata.dat")
SeekFile( file, 8 ) ; Move to the third integer in the file
WriteInt( file, 9999 ) ; Replace the original value with 9999
CloseFile( file )

DisplayFile( "The file after being midified", "mydata.dat" )
WaitKey()
; **** Function Definitions follow ****

; Read the file and print it
Function DisplayFile( Tittle$, Filename$ )
Print tittle$
filein = ReadFile( Filename$ )
While Not Eof( filein )
Number = ReadInt( filein )
Print Number
Wend
CloseFile( filein )
Print
End Function

 

JPQ
Maanantaina, 1. maaliskuuta, 2004 - klo 20.31:   
Jos tarvitsette käskyjen parametrejä niin nekin voinen pistää.:) vaikka eipä teidän jutuista ole ainakaan vielä apua.:( ja toiseksi täytyy tässä ehkäpä kohta hommaa jatkaa.:)

 

allu
Maanantaina, 1. maaliskuuta, 2004 - klo 20.58:   
moi JPQ,

en ole ikuna blitzillä mitään tehnyt, mutta satun omistamaan bb2.1:en manuaalin. nopealla vilkaisulla koodisi näyttäisi olevan ihan oikein, paitsi ettet tarkista WriteFile:n paluuarvoa. ja sillä edellytyksellä, että file-numerona käytetty nolla on todellakin nolla. eli, vika saattaakin olla jossain muualla, esim. ram: levyssä.

enivei, manuaalissa oli tälläinen esimerkki(sisennys näköjään katoaa johonkin Sakun syövereihin):

If WriteFile(0,"phonebook.data")
FileOutput 0
ResetList people()
While NextItem(people())
For i=0 To #num-1:NPrint \info[i]:Next
Wend
CloseFile 0
EndIf

ja kyllä, FileOutput asettaa Print:in ja NPrint:in ulostulon fileen.

btw. jos TriWv() taulukkosi sisältää 256 arvoa, käytä "mod 256", jotta saat vielä sen viimeisenkin arvon fileen. ei tule rapinoita fileen ;).

 

JPQ
Maanantaina, 1. maaliskuuta, 2004 - klo 22.27:   
allu: En ennenkään WriteFileen paluu arvoa ole tarkistanut eikä siitä ole hyötyä luulisin nytkään. noh kiitos siltikin ja yritän vielä kaikkea mitä keksin.
tuota lainaamaasi koodiasi kokeilla varioida ja kokeilen myös bb2:een uudelleen masennusta josko se olisi jollain tavoin solumssa.
mulla ainakin ennen tiedoston talletus ram levylle bb:stä sujunut ja ongelmani on koodauksesta on vaan pitkään. ja sisältäähän se 256 arvoa tuo taulukko.
PS. mitens sulla tuon manuaali on? eikä ohjelmaa itseään lainkaan ?

 

allu
Tiistaina, 2. maaliskuuta, 2004 - klo 0.33:   
JPQ: kyllähän se paluuarvo kilteissä ohjelmissa tietenkin pitää tarkistaa. ja näkeehän siitä bb:n näkemyksen siitä, saiko se filua auki vai ei. manuska väittää, että palauttaa -1 jos sai auki ja nollan, jos ei saanut.

> ja sisältäähän se 256 arvoa tuo taulukko.

juu, mutta sun indeksointi ei ota kuin 255 ensimmäistä arvoa sieltä.

ps. on mulla ohjelmakin, tuli 1200:sen mukana. en vaan sillä ole mitään tehnyt.

 

JPQ
Tiistaina, 2. maaliskuuta, 2004 - klo 3.17:   
allu: ymmärsin tuon ideksointi jutun ja kämmäsin myös siinä.:)

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: