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

Parser

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

[ Pregleda: 2586 | Odgovora: 8 ] > FB > Twit

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 - pre 258 meseci
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... ???
 
Odgovor na temu

Igor S
Igor Savic
Skopje, Makedonija

Član broj: 7831
Poruke: 11
217.16.80.*



Profil

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

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
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 - pre 258 meseci
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.
 
Odgovor na temu

Sole_boy

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



Profil

icon Re: Parser31.01.2003. u 14:39 - pre 258 meseci
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!
 
Odgovor na temu

goblin
Milan Aleksic
Gtech Belgrade, Sofware Engineer II
Beograd

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

Jabber: milanaleksic@gmail.com
Sajt: www.milanaleksic.net


Profil

icon Re: Parser31.01.2003. u 19:34 - pre 258 meseci
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 !
 
Odgovor na temu

Sole_boy

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



Profil

icon Re: Parser31.01.2003. u 21:39 - pre 258 meseci
Pa ako ti nije problem da okacis!
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
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 - pre 258 meseci
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.
 
Odgovor na temu

Sole_boy

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



Profil

icon Re: Parser02.02.2003. u 12:35 - pre 258 meseci
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???
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
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 - pre 258 meseci
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.
 
Odgovor na temu

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

[ Pregleda: 2586 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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