[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Wczytywanie danych z pliku



Juz raz wyslalem ten list, ale chyba nie doszedl, wiec powtarzam.
=================================================================

Ad 3 odpada, bo zbyt wolne, o czym mozna sie latwo przekonac:

if etime(true) = 0 then .
input from bardzo_duzy_plik binary.
repeat:
  readkey.
  if lastkey = -2 then leave.
end.
input close.
message etime view-as alert-box.

Ad 1 & 2 zbyt skomplikowane - ja zrobilbym to nastepujaco:

def var v_row as char no-undo.
def var v_type as char no-undo.

if etime(true) = 0 then .
input from bardzo_duzy_plik.
repeat:
  import unformatted v_row.
  v_type = entry( 1, v_row, "|" ).
  case v_type :
    /* tutaj wydlubywanie wartosci przy pomocy entry() */.
  end case.

end.
input close.
message etime view-as alert-box.


Pozdrawiam!

Tomasz Judycki



On 3 Nov 98, at 12:16, Tomasz Fidecki wrote:

> Witam po dlugiej przerwie.
> 
> Wczytuje dane z plikow tekstowych, w ktorych rekord znajduje sie w
> pojedynczej linii, separatorem jest znak "|".
> Rekordy moga byc roznej dlugosci (w zaleznosci od typu okreslanego przez
> pierwsze pole). Zalozenie jest takie, ze pliki moga byc bardzo duze i
> wczytywanie moze odbywac sie dosc czesto.  
> 
> Jak myslicie jaka metoda wczytywania bedzie najbardziej efektywna?
> 
> 1. Wczytywanie po linii, po uprzednim potraktowaniu pliku progressowym
>    quoter'em, a nastepnie wyciaganie pol mieszanina funkcji
>    index() i substring().
> 
> 2. j.w. ale skorzystanie z atrybutu list-items np.
>    
>    def var lista as char view-as selection-list inner-lines 1 
>                                     inner-chars 30.
>    def var linia as char format "x(255)".
> 
>    unix silent quoter plik1 > plik2.
>    lista:delimiter = "|".
>    
>    input from plik2:
>    repeat:
>      import linia.
>      lista:list-items = linia.
>    end.
>    input close.
> 
>    wtedy kolejne pola rekordu sa elementami listy wartosci zmiennej
>    lista (problem, gdy puste pole).
> 
> 3. Wczytywanie "na zywca" znak po znaku poprzez 
>    
>    input from plik unbuffered.
>    repeat: 
>      readkey. 
>      /* odpowiednie przypisania */
>    end.
>    input close.
> 
> A moze jakas inna kocepcja? 
> 
>  ________ 
> |_   _|__|Tomasz Fidecki, Progress Analyst/Programmer, UNIX fan 
>   | || _| Pekao Financial Services sp z oo Marynarska 21 02-674 Warsaw
>   |_||_|  phone (voice) +48 22 6400931, tomek@pekao-fs,com,pl, IRC
>   Fido__
> 
> 

------
Strona WWW:     http://pluton.pol.lublin.pl/pugpl/index.htm
Obsluga listy:  listserv@zeto.bydgoszcz.pl
Archiwum listy: http://www.zeto.bydgoszcz.pl/progress
------