function sprawdzpoprawnosc(numer: string; rodzaj: string): string; stdcall;
var
skonwert, wagi, wazone, t, s, pods: string;
i, j, selstart, suma, suma2, selend, kontrolna, kontrolna2: integer;
Conn: TSQLConnector;
Trans: TSQLTransaction;
Query: TSQLQuery;
begin
//--Utworzenie łącza do bazy danych
Conn := TSQLConnector.Create(nil);
with Conn do begin
ConnectorType := 'SQLite3';
HostName := '';
DatabaseName := 'wrn.ekm';
UserName := '';
Password := '';
end;
Trans := TSQLTransaction.Create(nil);
Conn.Transaction := Trans;
Query := TSQLQuery.Create(nil);
Query.DataBase := Conn;
//--
skonwert:=konwertujznaki(rozbij(numer));
{...}
If rodzaj='NIP' then
begin
if length(rozbij(numer))=20 then
begin
//--obliczanie cyfry kontrolnej
wagi:='6 5 7 2 3 4 5 6 7 ';
wazone:='';
for i:=1 to length(wagi) do
begin
if wagi[i] in ['0'..'9'] then wazone:=wazone+inttostr(strtoint(wagi[i])*strtoint(skonwert[i]))
else wazone:=wazone+wagi[i];
end;
selstart:=0;
suma:=0;
for i:=1 to length(wazone) do
begin
if wazone[i]=' ' then
begin
selend:=i;
suma:=suma+strtoint(copy(wazone,selstart+1,selend-selstart-1));
selstart:=selend;
end;
end;
kontrolna:=suma mod 11;
//--sprawdzanie numeru NIP;
//--wpisana cyfra kontrolna zgodna z obliczoną
if kontrolna=10 then result:='Numer NIP jest nieprawdziwy! (Cyfra kontrolna nie może wynosić 10)'
else if (numer[length(numer)]=inttostr(kontrolna)) then
begin
begin
Query.Close;
Query.SQL.Text:='Select * from numery where rodzaj='+quotedstr(rodzaj)+' and wyroznik like '+quotedstr(copy(numer,1,3)+'%');
Query.Open;
end;
if Query.RecordCount>0 then
begin
pods:=Query.fieldbyname('opis_f').AsString;
pods:=stringreplace(pods,'%jednostka1',Query.fieldbyname('jednostka1').AsString,[rfReplaceAll, rfIgnoreCase]);
result:=pods;
end
else result:='Numer NIP jest prawidłowy.';
end
else result:='Numer NIP jest nieprawdziwy! (Cyfra kontrolna jest nieprawidłowa. Prawidłowa = '+inttostr(kontrolna)+')';
end else result:='Numer NIP jest nieprawdziwy! (Ilość znaków jest nieprawidłowa)';
end
else
{...}