hi all,
this function open file very quickly! Usseful for 'SETGADGETTEXT' command.
demo:
`
`============================================
`Dark Basic Professional - Version 1.068
`BlueIDE 2 V2.0.14b
`============================================
`
`
`Main Source File
filename AS STRING=""
fileText AS STRING=""
`
`filename="C:\Dark Basic Software\Dark Basic Professional\Projects\FPSC-Game -source\FPSC-Game.dba"
filename="C:\Program Files\Dark Basic Software\Dark Basic Professional\Editor\Keywords\keywords100.ini"
if FILE EXIST(filename)=0 then PRINT "No file found !!!" : WAIT KEY : END
`ouverture rapide
t=TIMER()
fileText=openfile(filename)
TEXT 0,0,"ouverture rapide :"
TEXT 0,16,"temps total="+STR$(TIMER()-t)+" millisecondes"
TEXT 0,32,"LEN(fileText)="+STR$(LEN(fileText))
`ouverture style BlueGUI(extrait de 'paddy.dba')
fileText=""
t=TIMER()
OPEN TO READ 1,filename
`Use a for...next loop because repeat...until loops are VERY, VERY slow.
for i=0 TO 10
READ STRING 1,tmp$
if fileText=""
fileText=tmp$
else
fileText=fileText+CHR$(13)+CHR$(10)+tmp$
endif
if FILE END(1) : i=10 : else : i=0 : endif
next i
CLOSE FILE 1
TEXT 0,100,"ouverture BlueGUI :"
TEXT 0,116,"temps total="+str$(TIMER()-t)+" millisecondes"
TEXT 0,132,"LEN(fileText)="+STR$(LEN(fileText))
`PRINT filetext
WAIT KEY
END
function openfile(file$)
`Accélérer l'ouverture des fichier pour BlueGUI
`
`
`Cette fonction ouvre le fichier 'filename$', et renvoi une chaine de caractère contenant
`les lignes du fichier mises bout à bout.
`conçu pour 'SETGADGETTEXT'
`utilisation :
`
`chaine$=openfile(filename$)
`combien de ligne dans le fichier ?
OPEN TO READ 1,file$
MAKE MEMBLOCK FROM FILE 1,1
CLOSE FILE 1
numero_ligne=1
gms=GET MEMBLOCK SIZE(1)-1
for i=1 TO gms
valu=MEMBLOCK BYTE(1,i)
INC numero_ligne,(valu=13)
next i
DELETE MEMBLOCK 1
`charge le fichier dans un tableau
DIM tmp_array$(numero_ligne)
ctrl_char$=CHR$(13)+CHR$(10)
numero_ligne=0
OPEN TO READ 1,file$
for i=0 TO 1
READ STRING 1,Texte$
INC numero_ligne
tmp_array$(numero_ligne)=Texte$+ctrl_char$
i=FILE END(1)
next i
tmp_array$(numero_ligne)=Texte$
CLOSE FILE 1
`colle les lignes les unes derrière les autres
numero_ligne=numero_ligne*2
for lecture=0 TO 1
rest=(numero_ligne MOD 2)
numero_ligne=(numero_ligne>>1)+rest
cpt=0
for i=1 TO numero_ligne STEP 2
INC cpt
if i=numero_ligne
Texte$=tmp_array$(i)
else
Texte$=tmp_array$(i)+tmp_array$(i+1)
endif
tmp_array$(cpt)=Texte$
next i
lecture=(numero_ligne<3)
next lecture
Texte$=tmp_array$(1)
EMPTY ARRAY tmp_array$()
endfunction Texte$
@+
AMD Athlon(tm)XP 3200+ (2.2GHz)/DDR pc3200 (1024Mo)/Nvidia 6800GT / XP Pro SP2