Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 3.629 pregleda

Najnovija ↓

Parser 30.01.2003. u 14:02 · pre 289 meseci #1
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... ???
Re: Parser 30.01.2003. u 16:19 · pre 289 meseci #2
samo beta verziju (bez source-a) ... ako odgovara :)
pa valjda ces naci i ideje ... mail me
Re: Parser 31.01.2003. u 02:33 · pre 289 meseci #3
Mozes da malo vise das informacija o formatu u kome su zapisani
podaci u txt fajlu.
Potpis
People who think they know everything tend to irritate those of us who do.
Re: Parser 31.01.2003. u 15:39 · pre 289 meseci #4
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!
Re: Parser 31.01.2003. u 20:34 · pre 289 meseci #5
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
Potpis
Don't try to impress me... I'm good !
Re: Parser 31.01.2003. u 22:39 · pre 289 meseci #6
Pa ako ti nije problem da okacis!
Re: Parser 01.02.2003. u 23:51 · pre 289 meseci #7
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]
Potpis
People who think they know everything tend to irritate those of us who do.
Re: Parser 02.02.2003. u 13:35 · pre 289 meseci #8
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???
Re: Parser 03.02.2003. u 09:57 · pre 289 meseci #9
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.
Potpis
People who think they know everything tend to irritate those of us who do.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme