// tämä lataa dimensiot yrityskansiosta linsessinumero.dimensionname tiedostosta // tiedosto saatavilla koivuniemeltä procedure lataadimensionamet(koodit); var s,s2:string; l; fp; begin l :=lisenssinumero; fp := filepath; fn := addbackslash(fp)+inttostr(l)+'.dimensionname'; if fileExists(fn) then koodit.loadfromfile(fn); for i:= 0 to koodit.count-1 do begin s2 := koodit.strings[i]; s := extractWord(1,s2,';'); delete(s2,1,length(s)+1); koodit.strings[i] := s+'='+s2; end; end; function validoidimensio(dimensiot, virhe,koodit): Boolean; var s:string; sama: Boolean; begin sama := false; dimid:=tstringlist.create; result := true; for i := 0 to high(dimensiot) do begin if (not varisnull(dimensiot[i])) or (trim(dimensiot[i])<>'') then begin s := extractword(1,koodit.values[dimensiot[i]],';'); if s<>'' then begin if dimid.indexof(s)>=0 then begin virhe.add('Virheellinen dimensio kirjaus, dimensiotyyppiin '+koodit.values[dimensiot[i]]+' viitataan kahdesti'); result := false; end else dimid.add(s); end; end; end; dimid.free; end; function ennencsvtallennusta(data); var s:string; rivi; col_tili,col_kustannuspaikka, col_projekti; col_summa; d; Koodit; fn: string; virhe; begin koodit := tstringlist.create; virhe := tstringlist.create; lataadimensionamet(koodit); col_tili := 6; col_summa :=8; col_toiminto := 9; col_kustannuspaikka := 10; col_projekti := 11; d := 0; rivi := tstringlist.create; rivi.linebreak := #9; for i := 0 to data.count -1 do begin s := data.strings[i]; rivi.text := s; if rivi.strings[col_tili] = '1800' then rivi.strings[col_kustannuspaikka] := ''; data.strings[i] := rivi.text; d := d+ strtof(rivi.strings[col_summa]); dimensiot := VarArrayCreate([0, 2], 12); dimensiot[0] := rivi.strings[col_kustannuspaikka]; dimensiot[1] := rivi.strings[col_projekti]; dimensiot[2] := rivi.strings[col_toiminto]; if not validoidimensio(dimensiot,virhe,koodit) then virhe.add(s); // logentry(rivi.strings[col_summa]+' '+formatfloat('#0.00',d)); end; if virhe.count=0 then begin if abs(d)<0.01 then result := 'OK' else result := 'Debet/kredit erottaa '+formatfloat('#0.00', d); end else result := virhe.text; koodit.free; virhe.free; rivi.free; end; var sl: tstringlisT; s: string; begin xx := 0; sl := tstringlist.create; sl.loadfromfile('C:\temp\LNRO_KP20211012_095726'); s := ennencsvtallennusta(sl); showmessage(s); end;