23. september 2001 - 11:20Der er
20 kommentarer og 1 løsning
load textfil
hvordan loader jeg denne tekst www.brinkster.com\\scaccess\\test.htm jeg kan ikke rigtig for et program til at loade filen ordenligt til at loade filen bruger jeg disse koder : Private Sub Command1_click() Dim nr nr = \"0\" On Error Resume Next CommonDialog1.ShowOpen Dim intFreeFile As Integer Dim strTemp As String intFreeFile = FreeFile Open CommonDialog1.FileName For Input As #2 for nr = 0 to 7 Input #2, linier(nr) next Close #2 dim tal for tal = 0 to 7 MsgBox \"linier(\" & nr & \") \" & linier(nr) End Sub
jeg ved godt at der ikke kun er 7 linjer men den vil ikke loade alle linjernes fulde indhold hvis det ikke kan lade sig gøre at loade en text med så mange mærkelige tegn er der ikke en der kan fortælle mig hvilke tegn den ikke kan loade (jeg er lige glad med at den nogen gange skriver firkant fordi den ikke kan vise symbolet) på forhånd tak :)
kaffe har besvaret et spørgsmål med præcis samme overskrift for kort tid siden, er ekspertens søgefunktion så dårlig at du ikke så hans svar da du selv forsøgte at finde svaret eller hvorfor kunne du ikke bruge det?
er problemet at fin fil ikke eksisterer på serveren? at brugeren af dit program ikke er online?
anyway, så er der nogle ting i din kode som kan give mig knopper. For det første må du ALDRIG skrive open uden at skrive close! dernæst blander du FreeFile ind i det men ignorer den og kalder fil nummer 2 istedet, og så putter du strengvariablen \"0\" ind i nr selvom du senere vil bruge samme variabel til at holde tal? Kig lige på det her:
Dim linier(0 To 7) As String
Private Sub Command1_click() Dim nr As Integer Dim intFreeFile As Integer
On Error Resume Next CommonDialog1.ShowOpen intFreeFile = FreeFile Open CommonDialog1.filename For Input As #intFreeFile For nr = 0 To 7 Input #intFreeFile, linier(nr) MsgBox linier(nr) & \" (\" & nr & \")\" Next Close #intFreeFile End Sub
ps jeg ved ikke hvad du mener med \"en text med så mange mærkelige tegn\" da jeg ikke kan åbne www.brinkster.com\\scaccess\\test.htm men jeg vil tro du får firkanter hvis du har chr$(13) og den slags i din fil, eller hvis brugeren ikke har samme skrifttype som dig og du bruger ø til en med amerikans font?
pps jeg kan se du ikke har så mange points, og hvis mit svar var det eneste du havde brug for er det bestemt *ikke* 60 points værd - så jeg vil foreslå du selv svarer på spørgsmålet og tager dine points tilbage :-)
For at finde ud af hvad der vises som firkanter, vil jeg anbefale dig at smække en text1.text med multiline = true på din form og prøve det her i koden på en knap:
Dim x As String * 1 Dim filnavn As String filnavn = CommonDialog1.filename Open filnavn For Binary Access Read As #1 For I = 0 To LOF(1) Get #1, I + 1, x firkanttest = MsgBox(x & \" er ascii nummer \" & Asc(x) & \". Er dette en firkant?\", vbYesNo, \"byte nummer \" & I & \" af\" & LOF(1)) If firkanttest = 6 Then Text1.Text = Text1.Text & \" \" & Str(Asc(x)) Next I Close #1
hvis det er firkanterne du hentyder til i \"hvilke tegn den ikke kan loade\"? for jeg får linierne i fulde indhold så vidt jeg kan se?
det er bare en tekstfil, hvor der står den tekst i, men den vil ikke loade alle de mærkelige tegn. så når man loader den, får man ikke altid vist hele linien, der er nogen tegn der bliver taget som stop på linien, Eller noget i den retning ?
Private Sub Open_Click() Dim i As String Dim text As String On Error GoTo fejl CommonDialog1.CancelError = True CommonDialog1.Filter = \"Alle Filer (*.*) | *.* | Tekst Dokumenter (*.txt) | *.txt\" CommonDialog1.InitDir = \"e:\\documents and settings\\all users\\dokumenter\\\" CommonDialog1.Flags = cdlOFNHideReadOnly CommonDialog1.ShowOpen i = FreeFile Open CommonDialog1.FileName For Input As #i txtText.text = Input(LOF(i), i) Close #i fejl: End Sub
tja hvis et af dine tegn er chr$(13) kunne det jo godt lave ny linie - og jeg fandt vist et tabulatortegn i din tekst også, hvis det er hvad du kalder \"stop på linien\" men kan du give et eksempel på hvilken linje det er du får og hvad du vil have istedet, altså et konkret eksempel på fejlen (det er svært for mig at se hvor fejlen er og hvad den består i)? ved du på forhånd hvor lang \"en linie\" er (så kunne du jo bare tage det antal tegn ad gangen og vise istedetfor)?
supermother >
hvordan mener du at dit kodeeksempel lader en vide hvad der står på hvilken linie, og hvordan ser du antallet af liier? For mig at se åbner du bare filen på traditionel vis, og det simon vil er åbenbart at styre det linievis.
cellaneous > jeg ved ikke om du har prøvet at loade teksten, men der var nogle linier hvor kun halvdelen blev vist i msgboxen, jeg ved ikke hvad grunden var, men da jeg gik ind i \"dos editor\" og slettede tegnet det første tegn den ikke kunne vise kunne den loade hele linien ???
hvilke linier var det der kun blev vist halvdelen af (skal lige prøve at gennemgå det igen og se om jeg kan finde det, men et hint vil blive påskønnet)?
det tegn som du slettede, ved du evt hvilken ascii værdi det havde (brug evt \"firkanttest\" eksemplet for at finde ud af det)?
Dim x As String * 1 Dim filnavn As String Dim intFreeFile As Integer Dim antal As Integer
CommonDialog1.ShowOpen filnavn = CommonDialog1.filename If filnavn = \"\" Then Exit Sub intFreeFile = FreeFile
Open filnavn For Binary Access Read As #intFreeFile For i = 0 To LOF(1) Get #intFreeFile, i + 1, x If x = Chr$(10) Then \'gør ingenting - linjeskift på vej ElseIf x = Chr$(13) Then \'linjeskift er her MsgBox Text1.text, 0, \"linie nummer \" & antal antal = antal + 1 \'tøm tekstboksen så vi kan skrive på ny linie Text1.text = \"\" Else \'skriv videre på samme linie Text1.text = Text1.text & x End If Next i Close #intFreeFile
den laver ihvertfald noget andet med linie 4 (eller den femte faktisk for der er jo også en linie 0) så vidt jeg kan se i forhold til den jeg beskrev på 23/09 2001 12:07:54 men *hvorfor* ved jeg faktisk ikke rigtigt...
så du kan godt se at det er et skiodt svar fordi du hverken nummererer linierne eller tilnærmelsesvis kommer i nærheden af det simon beskriver således:
for tal = 0 to 7 MsgBox \"linier(\" & nr & \") \" & linier(nr) End Sub
det vil jeg gøre, selvom du selvfølgelig ikke skal gå glip af dine velfortjente point, hvis jeg for svar på nogle spørgsmål :)
Synes godt om
Ny brugerNybegynder
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.