Tecajna lista

Vse kar se tiče programiranja za internet.
mayor
Prispevkov: 292
Pridružen: 22.04.2008 19:55:10

Tecajna lista

Odgovor Napisal/-a mayor » 05.06.2008 21:39:17

Pozdravljeni!

Enkrat sem tečajno listo prenesel preko ftpja, ki sem jo potem razbral preko datoteke DtecBS-l.xml .
Vendar kot vidim, imajo oni to tečajno listo že od lani.

Kako bi v tem primeru prenesel tečajno listo tako, da bo redno osvežena, torej vsak dan?

PeJo
Prispevkov: 988
Pridružen: 08.01.2003 16:10:34

Tecajna lista

Odgovor Napisal/-a PeJo » 06.06.2008 08:26:35

Meni se vsak dan potegne dol DtecBS.xml in v bazi imam zadnji tečaj od 05.06.2008

lp,
Peter
Včasih, se ti zdi, da znaš vse .... boom in se zbudiš

mayor
Prispevkov: 292
Pridružen: 22.04.2008 19:55:10

Tecajna lista

Odgovor Napisal/-a mayor » 06.06.2008 09:48:53

men kaže da je bila nazadnje osvežena 2007
Zadnjič spremenil mayor, dne 06.06.2008 09:49:14, skupaj popravljeno 1 krat.

PeJo
Prispevkov: 988
Pridružen: 08.01.2003 16:10:34

Tecajna lista

Odgovor Napisal/-a PeJo » 06.06.2008 09:59:59

Ma daj no, kaj pa gledaš?

Pod ftp://ftp.bsi.si/ ena od vrstic --> 06/05/08 03:00 176,408 DtecBS-l.xml in ce jo odpres imaš noter podatke od 02.01.2008 pa do 05.06.2008

Lp, Peter
Včasih, se ti zdi, da znaš vse .... boom in se zbudiš

mayor
Prispevkov: 292
Pridružen: 22.04.2008 19:55:10

Tecajna lista

Odgovor Napisal/-a mayor » 06.06.2008 13:47:06

čudno, na tem računalniku pa pokaže pravilno, na prenosnem mi pokaže pa 2007, čuden kurac od IE

mayor
Prispevkov: 292
Pridružen: 22.04.2008 19:55:10

Tecajna lista

Odgovor Napisal/-a mayor » 07.06.2008 12:52:35

Pozdravljeni!

Koliko časa vam dejansko prenaša tečajno listo? Meni najmanj 1-2 minuti.

Imam pa narejeno tako:
Najprej iz bsi.si prenesem xml dokument, nato ga pretvorim v TXT s tole kodo:

Koda: Izberi vse

   var
    S: string;
    L: TStringList;
    I, J: integer;
    D: extended;
  begin

    L := TStringList.Create;
    try
      DecimalSeparator := '.';
      L.LoadFromFile(infile);
      S := L.Strings[0];
      S := Copy(S, Pos('<tecajnica datum=', S), Length(S));
      S := StringReplace(S, '<tecajnica datum="', #13 + #10 + '>', [rfIgnoreCase, rfReplaceAll]);
      S := StringReplace(S, '<tecaj oznaka="', #13 + #10, [rfIgnoreCase, rfReplaceAll]);
      S := StringReplace(S, '" sifra="', ';', [rfIgnoreCase, rfReplaceAll]);
      S := StringReplace(S, '">', ';', [rfIgnoreCase, rfReplaceAll]);
      S := StringReplace(S, '</tecaj>', '', [rfIgnoreCase, rfReplaceAll]);
      S := StringReplace(S, '</tecajnica>', '', [rfIgnoreCase, rfReplaceAll]);
      S := StringReplace(S, '</DtecBS>', '', [rfIgnoreCase, rfReplaceAll]);
      L.CommaText := S;
      J := 0;
      for I := 0 to L.Count - 1 do
        if LeftStr(L.Strings[I], 1) = '>' then
        begin
          Inc(J);
          S := Format('%.3d', [J]) + ';' +
            FormatDateTime('yyyyMMdd', EncodeDate(
            StrToInt(Copy(L.Strings[I], 2, 4)),
            StrToInt(Copy(L.Strings[I], 7, 2)),
            StrToInt(Copy(L.Strings[I], 10, 2))) + 1) + ';';
          L.Strings[I] := S + 'EUR;978;1.0';
        end
        else
          L.Strings[I] := S + L.Strings[I];
      I := 0;
      while I < L.Count do
      begin
        S := L.Strings[I];
        J := Length(S);
        while (S[J] <> ';') and (J > 0) do
          Dec(J);
        D := StrToFloat(RightStr(S, Length(S) - J));
        L.Strings[I] := LeftStr(S, J);
        D := 1. / D;
        S := Format('%.10f', [D]);
        while Length(S) < 14 do
          S := '0' + S;
        S := StringReplace(S, '.', ',', [rfReplaceAll]);
        L.Strings[I] := L.Strings[I] + S + ';' + S + ';' + S;
        Inc(I);
      end;
      L.Insert(0, 'Num;Date____;CCu;NCu;Buy___________;Middle________;Sell__________');
      L.Insert(1, 'Num;Datum___;KVa;NVa;Nakupni_______;Srednji_______;Prodajni______');
      L.Text := StringReplace(L.Text, ';', #9, [rfReplaceAll]);
      L.SaveToFile('c:\tecaji.txt');
    finally
      DecimalSeparator := ',';
      L.Free;
    end; 
In prenesem v memo1 in iz memo1 gre v bazo.

Ali ima kdo boljši primer, ker tole je res počasno!

Lp

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

Tecajna lista

Odgovor Napisal/-a Runner » 07.06.2008 15:02:30

Zakaj zaboga pa pretvarjaš v txt. Če rabiš cel XML ga preprosto shrani v zato celega, če ne pa poglej recimo OmniXML in preko XPath-a izlušči ven podatke ki jih rabiš ter jih zapiši v bazo.

gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

Tecajna lista

Odgovor Napisal/-a gabr » 07.06.2008 20:50:17

Zakaj zaboga pa pretvarjaš v txt. Če rabiš cel XML ga preprosto shrani v zato celega, če ne pa poglej recimo OmniXML in preko XPath-a izlušči ven podatke ki jih rabiš ter jih zapiši v bazo.
Nenenenenene!

Saj smo pred nekaj meseci videli, kako se to dela - z nizom StringReplace-ov pretvoriš XML v CSV in potrem parsaš tega.

;->

mayor
Prispevkov: 292
Pridružen: 22.04.2008 19:55:10

Tecajna lista

Odgovor Napisal/-a mayor » 07.06.2008 22:06:41

torej od katerega post upoštevat? :D

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

Tecajna lista

Odgovor Napisal/-a Runner » 08.06.2008 11:05:34

To pa prepuščava tebi. Malo pa le vklopi možgane :D

Odgovori