Avatar billede shjdsi Nybegynder
10. oktober 2000 - 18:03 Der er 22 kommentarer og
1 løsning

Hvor store filer kan vb5 håndtere

Hej! Er der et trick til at åbne rigtigt store txt filer, f.eks 50 mb i vb5. Når jeg prøver

open(\"c:\\50mb.fil\") for input as #1
    line input #1, SString
        do while i <= len(SString)
            bla bla bla
        loop
close #1

Går min maskine totalt ned.
Findes der en workaround???????
Hilsen Simse
Avatar billede tdaugaard Nybegynder
10. oktober 2000 - 19:00 #1
Det er fordi det tager sin tid at læse. Du skal indsætte en DoEvents (den går at dit program ikke ser ud som om det er frosset)

hvad skal \"do while i <= len(SString)\" forøvrigt bruges til ?

open \"c:\\50mb.fil\" for input as #1
    line input #1, SString
        do while i <= len(SString)
            bla bla bla

            doevents
        loop
close #1

Avatar billede shjdsi Nybegynder
10. oktober 2000 - 19:09 #2
do while kunne lige så godt have været en

for i <= len(SString)
i =i+1
next
Det er fordi jeg skal udskifte enkelte chars og kovertere dem til oct.
Iøvrigt ser det ikke ud til at have hjulpet. Maskinen fryser allerede ved
open (file).......
jeg har 128 mb 400 mhz

hmmmmmmmm.............. måske jeg skulle prøve med noget c eller c++


Avatar billede tdaugaard Nybegynder
10. oktober 2000 - 19:20 #3
tjaa måske..
Avatar billede shjdsi Nybegynder
10. oktober 2000 - 19:23 #4
Tak for svaret anyway! Fik da læst lidt om DoEvents som jeg ikke viste. Ha en go aften

Simse
Avatar billede tdaugaard Nybegynder
10. oktober 2000 - 21:34 #5
Hi hi, ja DoEvents er et MUST-KNOW-ABOUT & USE når man bruger løkker/loops der tager et stykke tid at gennemføre.

Hmm ..
Hvad er det HELT præcist du vil gøre med filen på de 50 MB ?? Jeg er (synes jeg selv!) rimeligt god til VB, så det kan sikkert være jeg kan hjælpe dig/lave et eksempel til dig, af hvad du vil have.
Avatar billede shjdsi Nybegynder
10. oktober 2000 - 22:53 #6
Tusind tak for det gode tilbud, men jeg tror vi klarer den nu, med lidt c shell scripting i unix. Det drejer sig om en postscript fil på 50mb som kun kan læse æ. ø å ihvis de bliver angivet i oct.
Derfor skulle programmet undersøge alle chars i filen og hvis char er over 127 printe den i filen som oct.

Kan du følge mig???

Men da denne fil jo er temmelig stor har jeg haft mine problemer med at få det til at køre.

Hilsen Simse
Avatar billede tdaugaard Nybegynder
10. oktober 2000 - 23:04 #7
Sådan da.

Kan du give mig et eksempel på hvordan f.eks. strengen

\"manden så en ø\"

ville se ud efter konverteringen ?
er det noget a\'la

\"manden s%E5 en %F8\"

??
Avatar billede shjdsi Nybegynder
11. oktober 2000 - 00:05 #8
Nej ikke helt, men tæt på

Det ville se sådan her ud ca..
\"manden s\\345 en \\234\"
\\ fordi postscript skal bruge den til afortolkning.
talle er oktanter!
hvis vi har
var = oct(cint(var)


Det var  i hvert fald det jeg kom frem til!

:-)

Avatar billede tdaugaard Nybegynder
11. oktober 2000 - 00:17 #9
Så havde jeg forstået ret (jeg manglede bare \\\'en).

Og det er bare alle ASCII værdier over 127 det (dvs. extended character set) der skal oversættes til \\oct(ascii) ?
Avatar billede tdaugaard Nybegynder
11. oktober 2000 - 00:21 #10
Hvis det er, vil jeg da med glæde lave et lille program til dig der kan gøre det.
Avatar billede shjdsi Nybegynder
11. oktober 2000 - 00:28 #11
Vi har netop lavet programmet i c, her kan du se koden ret enkelt egenligt lettere end i vb!

#include <stdio.h>
int main() {
        int i;
        while((i=getc(stdin))!=EOF){
                if(i < 127) {
                        putc(i,stdout);
                }
                else
        printf(\"\\\\%o\",i);
}

return 0;

}
Det er i sidste ende bedre for mig da resten af produktet bliver generet på unix. Men jeg havde faktisk også lavet koden i vb:

Private Sub Command1_Click()
Dim Linelen As Integer
Dim octLine As Variant
Dim charline As Variant
Dim i As Integer
Dim CharTest As Variant
Dim OctValue As Variant
Dim sAppend As String
i = 1

Cmdialog.CancelError = True
On Error GoTo Err
Cmdialog.ShowOpen

Open Cmdialog.filename For Input As #1
    Do While EOF(1) = False
    Line Input #1, sLine
       
        Linelen = Len(sLine)
            Do While i <= Linelen
                charline = Left(Mid(sLine, i), 1)
                CharTest = Asc(charline)
                If CharTest > 127 Then
                    OctValue = Oct(CInt(CharTest))
                    charline = \"\\\" + OctValue
                End If
            sAppend = sAppend + charline
            i = i + 1
            Loop
        Open (\"c:\\final1.ps\") For Append As #2
        Print #2, sAppend
        Close #2
Loop
Close #1
MsgBox \"færdig\"
Exit Sub
Err:
MsgBox \"Farvel\"
End Sub

Altså lidt hurtigt gaflet sammen men det fungere, var det også sådan du ville lave sådsn noget?
ris kritik ros modtages gerne :-)

man kan jo kun blive bedre ik!
Avatar billede shjdsi Nybegynder
11. oktober 2000 - 00:29 #12
Det var denne vb kode der gik ned, selv da jeg prøvede med 3mb filer...... hmmmmmmmmmm så et eller andet må da jo være galt.....!
Avatar billede tdaugaard Nybegynder
11. oktober 2000 - 00:57 #13
*lol* nu er jeg færdig :)
Anyway, min kode (den del der læser/converter teksten) ser således ud:

    strIn = txtInput.Text
    strOut = txtOutput.Text
   
    lblStatus.Visible = True
    lngLineCount = 1
   
    Open strIn For Input As #1
    Open strOut For Output As #2
        Do
            Line Input #1, strLine
            If Int(lngLineCount Mod 50) = 0 Then lblStatus.Caption = \"Processing line #\" & lngLineCount
           
            strNewLine = \"\"
            For lngIndex = 1 To Len(strLine)
                intChar = Asc(Mid$(strLine, lngIndex, 1))
                If intChar > 126 Then strChar = \"\\\" & Oct(intChar) Else strChar = Chr$(intChar)
                strNewLine = strNewLine + strChar
            Next
           
            Print #2, strNewLine
           
            lngLineCount = lngLineCount + 1
           
            DoEvents
        Loop Until EOF(1)
    Close #2
    Close #1
   
    lblStatus.Visible = False
-----------


Hvor hurtig er jeres C program til at løbe bare et par MB igennem ? (eller hvis i har testet med de 50 ..)
Avatar billede shjdsi Nybegynder
11. oktober 2000 - 01:52 #14
ca 30 sec, men det er også på en sun interprise 3500 med 1000 mb ram

ellers ser din code rigtig godt ud.

Tror jeg lige jeg laver en cut & paste
:-)


Avatar billede tdaugaard Nybegynder
11. oktober 2000 - 12:30 #15
DAAMMN!! 1000 MB RAM ??
okay, ja det må jeg sige det kan VB ikke klare ..

hvis du vil se hele programmet som jeg har lavet så kan jeg godt sende kilde koden til dig.
Avatar billede shjdsi Nybegynder
11. oktober 2000 - 13:23 #16
Det kunne da være sjovt :-)

vil du have en email adr. eller hva!
Avatar billede tdaugaard Nybegynder
11. oktober 2000 - 13:29 #17
Tjaa, det ville ihvertfald hjælpe lidt ;)
Avatar billede shjdsi Nybegynder
11. oktober 2000 - 15:05 #18
he he !!

her er den
shj@get2net.dk
glæder mig til at se programmet
hvad er det egenligt for et program og hvad er det beregnet til.

Er der copyright på koden eller må jeg ændre i den?
Avatar billede tdaugaard Nybegynder
11. oktober 2000 - 17:54 #19
Okay .. jeg overdrev måske ved at sige \"hele\", men der mente jeg altså bare det program så jeg har lavet til det her formål som du skulle bruge det ;) Sorry hvis du misfortod mig ..

Du må ændre LIGESÅ meget i det du har lyst til :)

Du havde VB 5.0 ikke ?
Avatar billede shjdsi Nybegynder
12. oktober 2000 - 09:24 #20
jeps ..... men jeg har faktisk integreret din kode fra dette spørgsmål med de tilhørende objekter allerede!

Så det er vel næsten ikke nødvendig...
Avatar billede tdaugaard Nybegynder
12. oktober 2000 - 11:46 #21
ahh .. okay .. nå, men nu er det sendt (i går!). Men så kan du jo se hvordan JEG havde lavet det ;)
Avatar billede shjdsi Nybegynder
12. oktober 2000 - 11:54 #22
Jeps :-)
Avatar billede shjdsi Nybegynder
12. oktober 2000 - 12:41 #23
Arbejder du egenligt med vb til dagligt?
Ved du evt. noget om vb kan åbne og vise tiff billeder, jeg ved man kan arbejde med bitmap og loadpicture funktionen men hvad med andre formater.
Jeg giver gerne point!!      :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel