Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: kolumny
anonim




Typ: Nie zarejestrowany
kolumny

Witam.
Jak moge wczytac plik tekstowy, gdzie linijki sa
podzielone na kolumny.Ale slowa w kolumnach nie zawsze sa jednakowej dlugosci, oddzielone sa spacja.

>9010000411< >BCX41<                >277<  >-<  >37<   
>9230002230< >2K2 1% MINIMEL< >300<  >66<  >-<

Pozdrowienia
    Jan

23-07-2004 21:38
  
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

hmm... można za pomocą pętli; stwórz zindexowane 10 etykiet i wpisz:

Const Enter = vbNewLine
Dim Bufor As String
Dim Kanal As Integer
Dim oLini As Integer
Dim FileName As String
Dim Spis(1000) As String
Dim I As Integer
Dim I1 As Integer
Dim Temp As Integer
Dim Temp1 As Integer
Dim SPS As String
Dim Midd As String
FileName = "C:\lll.txt"
Kanal = FreeFile
oLini = 0
Open FileName For Input As Kanal
While EOF(Kanal) <> -1
Line Input #Kanal, Bufor
Spis(oLini) = Bufor
oLini = oLini + 1
Wend
Close Kanal
For I = 0 To oLini
SPS = Spis(I)
I1 = 0
Temp1 = 0
Temp = 0
Do Until I1 = Len(SPS)
I1 = I1 + 1
Midd = Mid(SPS, I1, 1)
If Midd = " " Or I1 + 1 = Len(SPS) Then
If I1 + 1 = Len(SPS) Then I1 = I1 + 2
Midd = Mid(SPS, Temp + 1, I1 - Temp - 1)
lblCol(Temp1).Caption = lblCol(Temp1).Caption & Midd
Temp1 = Temp1 + 1
Temp = I1
If I1 - 1 = Len(SPS) Then Exit Do
End If
Loop
For ENT& = 0 To lblCol.Count - 1
lblCol(ENT&.Caption = lblCol(ENT&.Caption & Enter
Next
Next


Sprawdź, bo tak na żywo pisałem!


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

23-07-2004 23:41
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
Knight Lore''FC




Typ: neutral
Postów: 240
Zarejestrowany: Jan 2003

dziwny ten listing... brak wciec utrudnia analize...

z tego co zauwazylem ze wyniki NIE sa rozdzielone SPACJAMI tylko znajduja sie pomiedzy znakami >< !!!

oto moja wersja progamu...

'---------------------------------
Dim Wpisy() As String
Dim OdP As Integer
Dim DoP As Integer
Dim Ile_Wpisow As Integer

Ile_Wpisow = 0

Open App.Path + "\test.txt" For Input As #1
   
    While EOF(1) <> -1
        Line Input #1, a$
       
        OdP = 1
        start = 0
       
        While OdP > 0
            'znajdz poczatek
            OdP = InStr(start + 1, a$, ">" )
       
            If OdP > start Then
                'znajdz koniec
                DoP = InStr(OdP, a$, "<" )
                If DoP > OdP Then
                    'zwieksz ilosc wpisow i zmien wielkosc tablicy
                    Ile_Wpisow = Ile_Wpisow + 1
                    ReDim Preserve Wpisy(Ile_Wpisow)
                    'zapamietaj nowy wpis
                    Wpisy(Ile_Wpisow) = Mid(a$, OdP + 1, (DoP - 1) - OdP)
                    start = DoP
                End If
            End If
           
        Wend
       
    Wend
   
Close

'ile odczytales wpisow
MsgBox Ile_Wpisow

'pokaz 1 wpis
MsgBox Wpisy(1)

'...itd

[Post edytowany dnia 24-07-2004 02:32 przez Knight Lore'FC]

24-07-2004 02:30
Pokaż profil Knight Lore  Wyślij email do Knight Lore        1065423
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

Wcięć nie robię, bo mi się nie chce . I przyjżyj się! Są spacje ! Może poprostemu wyniki muszą być wyświetlane w formie ">****<". Anonim wie, co pisze (chyba). Inspiruje mnie "InStr". Jak pewnie zauważyłęś, u mnie są pętle szukające. Tu - instr robi wszystko. Jak on działą? Próbowałem wykorzystać, ale nie znajdowywał potrzebnej rzeczy, chociaż tam była. Głupio podpowiedź zrobili, jak się otwiera nawias w tym instr: "[Start],[String1],[String2],[Comape As VbCompareMethod = vbBinaryCompare]" - I co tu czym jest?! nie ma to jak funkcja Find w richtextboxie . Prosta i NORMALNA.


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

24-07-2004 03:38
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
Knight Lore''FC




Typ: neutral
Postów: 240
Zarejestrowany: Jan 2003


Głupio podpowiedź zrobili, jak się otwiera nawias w tym instr: '[Start],[String1],[String2],[Comape As VbCompareMethod = vbBinaryCompare]' - I co tu czym jest?.... Prosta i NORMALNA.


To jest jak najbardzie PROSTA i NORMALNA funkcja
wynik= pozycja od lewej w ciagu
[Start] = od ktorego znaku (od lewej) mam zaczac
[String1]=w czym mam szukac
[String2]=co mam szukac
[Comape As VbCompareMethod = vbBinaryCompare] - to tylkko przy BINARNYM szukaniu wartosci - przy TXT tego sie nie daje (pomijasz ten parametr)
czyli przyklad:

a$="Ala ma kota"

'szukamy "kota"

wynik=instr(1,a$,"kota"

wynik=8 'kot zaczyna sie od 8 znaku

{compare)= sa tam jeszcze inne wartosci np. pomijanie wielkosci liter

[Post edytowany dnia 24-07-2004 14:54 przez Knight Lore'FC]

24-07-2004 14:53
Pokaż profil Knight Lore  Wyślij email do Knight Lore        1065423
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

Aha. Już rozumiem, ale pod tym względem podpowiedź jest durna, że może się mylić string1 ze string2. A jakbym chciał przeszukać tylko kawałek textu? To już chyba muszę dłubać midem? Czy może jest jakaś prostsza metoda na to (tak jak w richtextbox1.find)


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

24-07-2004 15:15
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
Wszystkich odpowiedzi: 5 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1