Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Parser

[es] :: Pascal / Delphi / Kylix :: Parser

[ Pregleda: 729 | Odgovora: 8 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Sole_boy

Član broj: 2486
Poruke: 58
*.ptt.yu



Profil

icon Parser30.01.2003. u 13:02

Pozdrav ljudi, ima li neko ideju kako mogu da uradim parser koji bi neki txt fajl sa podacima tipa sima,mika,pera,djoka ubacio u bazu podataka ali u odredjena polja, znaci sima u polje klosari mika u polje alkosi itd... ???
30.01.2003. u 13:02 

Igor S
Igor Savic
Skopje, Makedonija

Član broj: 7831
Poruke: 11
217.16.80.*



Profil

icon Re: Parser30.01.2003. u 15:19
samo beta verziju (bez source-a) ... ako odgovara :)
pa valjda ces naci i ideje ... mail me
30.01.2003. u 15:19 

Riste Pejov
Team Leader/Senior Software Developer @ Ein-Sof ltd S..
Skopje, Macedonia

Član broj: 128
Poruke: 571
212.110.78.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Parser31.01.2003. u 01:33
Mozes da malo vise das informacija o formatu u kome su zapisani
podaci u txt fajlu.
People who think they know everything tend to irritate those of us who do.
31.01.2003. u 01:33 

Sole_boy

Član broj: 2486
Poruke: 58
*.ptt.yu



Profil

icon Re: Parser31.01.2003. u 14:39
Pa recimo imam bazu tipa: (PARADOX)

IME | PREZIME | TELEFON

i npr. u TXT fajlu imam

PERA | SIMIC | 333555
RASA | RASIC | 555666

...

i sada parser bi trebao da ovo ubaci u bazu podataka
tim redom i u odrdjeno polje!
31.01.2003. u 14:39 

goblin
Milan Aleksic
Smederevo

Član broj: 4055
Poruke: 70
*.ptt.yu

Jabber: goblin@elitesecurity.org
ICQ: 53177884
Sajt: drop.to/goblin


Profil

icon Re: Parser31.01.2003. u 19:34
ja ovakve probleme resavam na silu: koristim temporary string u koji ubacim jednu liniju iz fajla, pa onda samo iskopiram odredjeni broj karaktera, pa zatim izbrisem onoliko koliko sam i iskopirao. Taj delimican string koji je iskopiran mozes dalje da putem Trim funkcije uredis (izbrises beline), pa ponovis postupak za drugi, treci element u redu itd.

Posle samo uzmes sledeci red i tako dok ne naidjes na eof.

Ovo radi samo ako ti elementi u redu zauzimaju isti broj mesta. Toplo ti preporucujem da ako ovo nije slucaj bolje preuredis txt fajl nego da komplikujes parser jer se lako moze desiti da pogresis; doduse, koriscenjem nekog nekarakteristicnog karaktera za razdvajanje elemenata nece mnogo iskomplikovati parser - tada samo koristis Pos('|', trenutni_red) funkciju da odredis do kog elementa da kopiras/brises trenutni red.

Ako treba source code, vichi
Don't try to impress me... I'm good !
31.01.2003. u 19:34 

Sole_boy

Član broj: 2486
Poruke: 58
*.ptt.yu



Profil

icon Re: Parser31.01.2003. u 21:39
Pa ako ti nije problem da okacis!
31.01.2003. u 21:39 

Riste Pejov
Team Leader/Senior Software Developer @ Ein-Sof ltd S..
Skopje, Macedonia

Član broj: 128
Poruke: 571
212.110.78.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Parser01.02.2003. u 22:51
Code:

var
my_list:TStringList;
i:int;
begin
my_list:=TStringList.Create; // ne secam dali je bas ovako, odavno nisam radio u delphi
my_list.LoadFromFile('c:\moj_delimited_fajl.txt');

for k:=0 to my_list.Count-1 do
  begin
  //insertuj novi slog u dataset 
  my_dataset.insert;
  //counter za broj kolone pocinje sa nulom
  p:=0;
  while(Length(my_list[k])>0) do
      begin
    
         
   if(Pos(my_list[k],'|')>0)
   begin
// kopiraj slova koja su ispred prvog znaka | i zadatu kolonu dataseta
   my_dataset.Params.Params[p].AsString:=Copy(my_list[k],1,Pos(my_list[k],'|')-1);   
// postojeci string dobija vrednost istog, bez slova ispred prve instance | 
   my_list[k]:=Copy(my_list[k],Pos(my_list[k],'|')+1,Length(my_list[k])-Pos(my_list[k],'|')-1) ;
   end
  else
   begin 
   //kad e radi o zadnjem podatku, onda nemamo | i kopiramo ostatak stringa
   my_dataset.Fields.Fields[p].AsString:=my_list[k];
   my_list[k]:='';
   end;
   // predji na sledecu kolonu   
   inc(p);
   end;
   my_dataset.post; //postuj podatke u tabelu
  end;

end;


Za da ovo radi, moras imati my_dataset, koji ce biti koji bilo objekat nasledjen iz TDataset-a, i imati isti broj kolona, kako sto ima fajl koji parsiras

princip je isti gore navedeni sa nekih malih izmena.
ukoliko ti nesto nije jasno, slobodno pitaj :)

[Ovu poruku je menjao Riste Pejov dana 03.02.2003. u 10:58 GMT]
People who think they know everything tend to irritate those of us who do.
01.02.2003. u 22:51 

Sole_boy

Član broj: 2486
Poruke: 58
*.ptt.yu



Profil

icon Re: Parser02.02.2003. u 12:35
Hmm CODE radi ali kada se umesto my_dataset.params stavi my_dataset.Fields[p].asstring i samim tim sve podatke ubacuje u prvo polje???
02.02.2003. u 12:35 

Riste Pejov
Team Leader/Senior Software Developer @ Ein-Sof ltd S..
Skopje, Macedonia

Član broj: 128
Poruke: 571
62.162.102.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Parser03.02.2003. u 08:57
i mislio sam na Fields, ali eto, iz neobjasnivih razloga (ceo dan sam sam radio na jednom ogromnom IB stored proceduru), sam umesto Fields, stavio Params, izvinite. Koregirano.

People who think they know everything tend to irritate those of us who do.
03.02.2003. u 08:57 

[es] :: Pascal / Delphi / Kylix :: Parser

[ Pregleda: 729 | Odgovora: 8 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.