Avatar billede epo_blackdevil Nybegynder
14. august 2008 - 22:13 Der er 13 kommentarer og
1 løsning

dele linie i 3 og gemme i array

dette virker fint med at dele det i (0, X) og (1, X)
men hvis jeg tilføjer (2,X) så kommer der fejl...

nogen forslag?

ReDim buffet_liste(1, X)    'redim til det antal data der er
    X = 0
    Open DataFil For Input As #1
    Do
        Line Input #1, Linje
        D = Split(Linje, ";")    ' deler linjen efter ;
        buffet_liste(0, X) = D(0)  ' tildeler buffet nr
        buffet_liste(1, X) = D(1)    ' tildeler buffet
        buffet_liste(2, X) = D(2)  ' tildeler pris
        X = X + 1
    Loop Until EOF(1)
    Close 1

hvis jeg holder musen over D(0), D(1) og D(2) så viser den fint hvad hver variabel indeholder og de inde holder hver den data de skal fra første linie... den vil bar ikke gå viderere. den går kold nede ved (2, X)
Avatar billede arne_v Ekspert
14. august 2008 - 22:22 #1
ReDim buffet_liste(2, X)

maaske ?
Avatar billede kabbak Professor
14. august 2008 - 22:31 #2
Jeg bruger sommetider denne, kan den bruges

Dim buffet_liste() As Variant    'redim til det antal data der er
DataFil = "C:\data\minfil.txt"
Dim X As Integer
    X = 0
    Open DataFil For Input As #1
    Do
    ReDim Preserve buffet_liste(X)
        Line Input #1, Linje
        buffet_liste(X) = Split(Linje, ";")    ' tildeler buffet nr
        X = X + 1
    Loop Until EOF(1)
    Close 1

data ligger nu i
buffet_liste(X)(0)
buffet_liste(X)(1)
buffet_liste(X)(2)
Avatar billede epo_blackdevil Nybegynder
14. august 2008 - 22:58 #3
@ arne_v har jeg forsøgt.

@kabbak, den skriver også her "subscript out of range"

alt koden ser således ud:
(er dig jeg har fået det fra kabbak hvis det hjælper :) )

Public Sub HentDataBuffet()
    Dim X As Integer, D As Variant, Linje As String, DataFil As String
    DataFil = App.Path & "\buffet.txt" ' hvis den er i samme bibliotek som programmets exe fil
    X = 0
    Open DataFil For Input As #1
    Do
        Line Input #1, Linje
        X = X + 1    ' tæller data
    Loop Until EOF(1)
    Close 1
   

    ReDim buffet_liste(1, X)  'redim til det antal data der er
    X = 0
    Open DataFil For Input As #1
    Do
        Line Input #1, Linje
        D = Split(Linje, ";")    ' deler linjen efter ;
        buffet_liste(0, X) = D(0)  ' tildeler buffet nr
        buffet_liste(1, X) = D(1)    ' tildeler buffet
        buffet_liste(2, X) = D(2)  ' tildeler pris
        X = X + 1
    Loop Until EOF(1)
    Close 1
End Sub

jeg har bare tilføjet: "buffet_liste(2, X) = D(2)" ellers ikke ændret noget
Avatar billede kabbak Professor
14. august 2008 - 23:02 #4
så er det som arne v siger
ReDim buffet_liste(2, X)
Avatar billede kabbak Professor
14. august 2008 - 23:06 #5
Hvis du for eksempel ikke har prisen med, findes D(2) ikke
Avatar billede epo_blackdevil Nybegynder
15. august 2008 - 00:09 #6
ReDim buffet_liste(2, X)

virker nu efter jeg har lavet ny fil den skal hente data fra, så skal have gransket min data fil igennem da det så er der fejlen ligger
Avatar billede kabbak Professor
15. august 2008 - 10:52 #7
tjek i din gamle dil om du har flere end en tom linje i bunden, hvis du har det, får du fejl.

Hvis du læser den i Notepad, må cursoren, kun lige hoppe lige under sidste datalinje, hvis den går længere, så slet de tomme, indtil du er under den sidste linje.
Avatar billede epo_blackdevil Nybegynder
15. august 2008 - 17:40 #8
det var filen  der var et mellemrum der ikke skulle være der :)

så nu spiller det.


lige et bonus spørgsmål så...

det der bliver gemt i buffet_liste(1,X) det er en lang række retter der er sepereret af "#" alle disse retter bliver nu hentet frem på en gang og vist som en lang linie.

f.eks.:
Røget ørred med flødestuvet spinat # Gratineret kylling med pastasalat # Fyldt svinemørbrad # Ostegratinerede krydderkartofler # Oksekødsfyldte pandekager # Mixet salat med dressing # Cheese cake med ananas

når data fra buffet_liste(1,X) hentes kan man så via split få den til at i den textbox hvor teksten hentes frem at den tilføjer linieskift hver gang den støder på et "#" ?

har førsøgt lidt med count og split, men da der kun er en linie så er jeg gået lidt kold i det...
Avatar billede kabbak Professor
15. august 2008 - 19:16 #9
"det der bliver gemt i buffet_liste(1,X) det er en lang række retter der er sepereret af "#" alle disse retter bliver nu hentet frem på en gang og vist som en lang linie."

det burde da bare være en ret i buffet_liste(1,X), hvor kommer de andre og  # fra ??
Avatar billede epo_blackdevil Nybegynder
15. august 2008 - 21:47 #10
en buffet består af mange retter sat sammen som tag selv bord.

der vil det være nemmere for kokken når der kommer en bestilling at hver ret i buffeten er listen op efter hinanden og ikke kommer ud i en køre.

uoverkueligt:
Røget ørred med flødestuvet spinat # Gratineret kylling med pastasalat # Fyldt svinemørbrad # Ostegratinerede krydderkartofler # Oksekødsfyldte pandekager # Mixet salat med dressing # Cheese cake med ananas

Overskueligt:
Røget ørred med flødestuvet spinat

Gratineret kylling med pastasalat

Fyldt svinemørbrad

Ostegratinerede krydderkartofler

Oksekødsfyldte pandekager

Mixet salat med dressing

Cheese cake med ananas


btw tak kabbak, du har været en meget stor hjælp til mit program :)
Avatar billede epo_blackdevil Nybegynder
18. august 2008 - 12:48 #11
buffet_liste(0,X) indeholder Buffet nr som bliver vist i en combobox

buffet_liste(1,X) indeholder de retter buffeten er bygget op af

buffet_liste(2,X) indeholder prisen på buffet
Avatar billede kabbak Professor
18. august 2008 - 22:47 #12
Der ser ud til at du har mrllrmrum på begge sider af #, altså" # ", så derfor deling som vist med split.

Husk at sætte multiline til true i tekstboksens properties.

TextBox1.Text = Replace(buffet_liste(1,X), " # ", vbLf)
Avatar billede epo_blackdevil Nybegynder
19. august 2008 - 15:18 #13
med denne linie så spiller det :)

Text8.Text = Text8.Text + Replace(buffet_liste(1, X), " # ", vbNewLine)

du har så sandelig fortjent dine points nu kabbak :D

jeg takker igen for hjælpen
Avatar billede kabbak Professor
19. august 2008 - 20:52 #14
et svar ;-))
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