Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Info

https://stash.skj.fi/projects/SKRIP

...

Katso myös CSV_Tuonti.htm esimerkki.

Numerot

...

Eroja normaaliin pascal syntaksiin

Eroja on, tässä muutama maininta.
Muuttujat ovat pääsääntöisesti aina variantteja. 
Case lause on erilainen , lauseessa ei vaadi että casen arvot ovat vakiota. Ehto totetuu kun funktio paluu arvo täsmää verrattavaan

Code Block
languagedelphi
sanat := 'SIKA;PORSAS;LEHMA;KISSA'; 
s := 'elainLehma';           
case lowercase(copy(s,5)) of        
  lowercase(extractWord(1,sanat,';')) : showmessage('RÖH');
  lowercase(extractWord(2,sanat,';')) : showmessage('röh');
  lowercase(extractWord(3,sanat,';')) : showmessage('ammuu');
  lowercase(extractWord(4,sanat,';')) : showmessage('miau');
end;  


Numerot

  • Arc
  • Tan
  • Dec
  • Inc
    • Lisää yhden muuttujaan, esim Inc(count)
  • Pyorista(Luku; tarkkuus)
    • Pyöristää luvun annettuun tarkkuuteen, esim -2 -> 2 desimaaliin, 2 = lähimpään 100:n
  • SimpleRoundTo
    • Sama kuin pyöristä, mutta johtuen d7 system kirjaston bugista, toimii väärin jossain tilanteissa. Pyorista korjaa sen. D2007 versioon korjautunut.
  • RoundTo
  •  Ceil
    • Pyöristä ylöspäin 17,01 → ceil(17,01*10)/10 → 17,10

Päiväys

  • function Date:TDateTime;
    • palauttaa nykyisen päiväyksen DateTime tyyppinä

...

  • function TTbTable.TryPost (ms_viive: integer);
    • tTbTable-luokan menetelmä. Yrittää saada muokkausoikeuden taulun nykyiseen tietueeseen ja yritetään korkeintaan ms_viiveen ajan. Aika on millisekunteina. Palauttaa false jos epäonnistui, esim.

      Code Block
      languagedelphi
      if varsaldo.tryEdit(2000) then
      begin
        varsaldo.fieldbyname('saldo').asfloat := 0;
        varsaldo.fieldbyname('muutosklo').asdatetime := now;
        if not varsaldo.trypost(2000) then
        begin
          logentry('Varsaldoa ei voi tallentaa');
          varsaldo.cancel;
        end;
      end
      else
        showmessage('Saldoa ei voi muokata');
      
      


Pervasive sql

Hakuindeksin vaihtaminen; esim toimittajataulussa key0=tunnus, key1 nimi, jos halutaan hakea nimellä vaihdetaan haun kohdistuminen niin käytetään:  taul.indexname := '1';

Tällä voi tarkistaa onko joku taulu olemassa: Select count(*) from X$File where Xf$Name = 'taulunnimi' , palauttaa 1 jos taulu olemassa


Koska pervasiven PDAC komponenttikirjastoista ei ole saatavilla lähdekoodeja, siitä emme ole voineet tuottaa titan rajanpinnan kaltaista liittymää. Sql rajapinta on tehty omilla rutiineilla jotka ovat

...

Code Block
languagedelphi
var
  postaaja;
  s;
  laskuri;
  st;
begin
  st := CreateStatus('Päivitys');
  laskuri := 0;
  // allaoleva showstatus palauttaa false jos käyttäjä on painanut peruuta tai skjscript
  // on saanut wm_close viestin. esim process -q skjscript.exe
  while showstatus(st,'Päivitän asiakasdataa ','Päivitetty '+inttostr(laskuri)) do
  begin

      postaaja := LuoPostaaja;
      postaaja_lisaakentta(postaaja,'id','1212');
      postaaja_lisaakentta(postaaja,'data','adadada');
      s := postaaja_post(postaaja,'https://jotain.skj.fi/joku.php','');
      logentry('vastaus'+s);
      sleep(1000);
      inc(laskuri);
      logentry('virhe'+postaaja_virhe(postaaja));
      postaaja_sulje(postaaja);
   end;
  closestatus(st);
end;



Uudet funktiot (D10 versio)

Code Block
function LisaaAsiakas(kanta: string; Numero:integer=0; valialku, valiloppu: integer=0): integer

...