[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
------