/[projects]/dao/DelphiScanner/Main.pas
ViewVC logotype

Diff of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2678 by torben, Wed Aug 26 13:20:47 2015 UTC revision 2694 by torben, Thu Sep 3 14:31:39 2015 UTC
# Line 8  uses Line 8  uses
8    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
9    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
10    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,
11    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    Winspool, ShellApi, ClipBrd, Buttons, wininet,
12    UITypes,    UITypes,
13    PakkeshopLabels,    PakkeshopLabels,
14    StBarC,    StBarC,
15    Math // DegToRad() bruges i PrintPakkeshopLabel    Math, // DegToRad() bruges i PrintPakkeshopLabel
16      Utils
17    
18    ;    ;
19    
20  type  type
   TStrArray = array of string;  
21    TMainForm = class(TForm)    TMainForm = class(TForm)
22      StregkodeST: TStaticText;      StregkodeST: TStaticText;
23      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
# Line 53  type Line 52  type
52      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
53      ListBox1: TListBox;      ListBox1: TListBox;
54      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
55      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
56      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
57      Image1: TImage;      Image1: TImage;
58      ListBox2: TListBox;      ListBox2: TListBox;
# Line 94  type Line 93  type
93      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
94      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
95    
   
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
96    function getProddato() : TDate;    function getProddato() : TDate;
97    function getProddag() : String;    function getProddag() : String;
98    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
99    function GetCurrentPrinterHandle() : THandle;    function GetCurrentPrinterHandle() : THandle;
100    function SavePChar(p: PChar): PChar;    function SavePChar(p: PChar): PChar;
101    function AdobeReaderExists(): Boolean;  
102    function FileTime2DateTime(FileTime: TFileTime): TDateTime;    function FileTime2DateTime(FileTime: TFileTime): TDateTime;
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
103    
104    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
105    procedure StartScreen();    procedure StartScreen();
# Line 139  type Line 130  type
130    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
131    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
132    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
133    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
134    procedure OpdaterListenButton01Click(Sender: TObject);    procedure OpdaterListenButton01Click(Sender: TObject);
135    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
136    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
# Line 186  type Line 177  type
177    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
178    procedure TjekkerUrls();    procedure TjekkerUrls();
179    
   procedure RoundCornerOf(Control: TWinControl);  
180    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
181    
182    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);
# Line 199  type Line 189  type
189      SkrivLog : String;      SkrivLog : String;
190      Sted : String;      Sted : String;
191      StedNavn : String;      StedNavn : String;
192      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel : String;
193  // 29150330: start  // 29150330: start
194      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
195  // 20150330: slut  // 20150330: slut
# Line 213  type Line 203  type
203      AlarmLyd : String;      AlarmLyd : String;
204      ScannetOkLyd : String;      ScannetOkLyd : String;
205      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
206  // 20150317: start  
207      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
208  // 20150317: slut  
209      PrinterNavn : String;      PrinterNavn : String;
210      TjekPrinter : String;      TjekPrinter : String;
211      XPosRute : integer;      XPosRute : integer;
# Line 256  type Line 246  type
246    
247      Barcode : TStBarcode;      Barcode : TStBarcode;
248    
           function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
249    
250      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
251      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
# Line 290  var Line 279  var
279  implementation  implementation
280  {$R *.dfm}  {$R *.dfm}
281    
 function TMainForm.TColorToHex(Color : TColor) : string;  
 begin  
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
282    
283  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
284  begin  begin
# Line 413  begin Line 385  begin
385    
386      StartScreen();      StartScreen();
387      MainForm.Caption := Titel;      MainForm.Caption := Titel;
388      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
389      MainForm.Farve := Farve;      MainForm.Farve := Farve;
390      MainForm.Titel := Titel;      MainForm.Titel := Titel;
391      MainForm.Url := Url;      MainForm.Url := Url;
# Line 473  begin Line 445  begin
445          end          end
446          else          else
447          begin          begin
448            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
449          end;          end;
450          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
451        end        end
452        else        else
453        begin        begin
454          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
455          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
456        end;        end;
457      end;      end;
# Line 522  end; Line 494  end;
494    
495  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
496  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
497  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
498  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
499       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
500       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
501       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
502  end;  end;
503    
504  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
# Line 561  begin Line 517  begin
517    
518    btnNulstil.BringToFront;    btnNulstil.BringToFront;
519    
520    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
521    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
522    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
523    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
524    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
525    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
526    
527    
528    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 602  begin Line 558  begin
558      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
559      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
560    
561    
562      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
563        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
564    
565    
566    
567      LabelType := ReadInteger('Settings','LabelType',1);      LabelType := ReadInteger('Settings','LabelType',1);
# Line 642  begin Line 601  begin
601    
602      if (SkrivLog = '1') then      if (SkrivLog = '1') then
603      begin      begin
604        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
605        try        try
606          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
607          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
# Line 785  begin Line 744  begin
744      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
745      // *************************** //      // *************************** //
746    
747    {$IfDef STED_BK}
748        SpecialVersionSted := 'BK';
749    {$EndIf}
750    {$IfDef STED_DBK}
751        SpecialVersionSted := 'DBK';
752    {$EndIf}
753    {$IfDef STED_FD}
754        SpecialVersionSted := 'FD';
755    {$EndIf}
756    {$IfDef STED_NS}
757        SpecialVersionSted := 'NS';
758    {$EndIf}
759    
760    
761      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
762      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
763      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 800  begin Line 773  begin
773      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
774      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
775    
 // 20150313: start  
776      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
777      begin      begin
778         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 811  begin Line 783  begin
783         SpecialVersionSted := '03';         SpecialVersionSted := '03';
784         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
785      end;      end;
 // 20150313: slut  
786    
787      if SpecialVersionSted = 'BK' then      if SpecialVersionSted = 'BK' then
788      begin      begin
# Line 1156  begin Line 1127  begin
1127      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1128    
1129      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1130      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1131    
1132  end;  end;
1133    
# Line 1608  begin Line 1579  begin
1579             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1580             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1581             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1582                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1583             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1584                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1585             btnNulstil.Visible := false;             btnNulstil.Visible := false;
1586           end           end
1587          else          else
# Line 1670  begin Line 1641  begin
1641           end;           end;
1642            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1643            begin            begin
1644              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1645              if Storepakker1.Checked then              if Storepakker1.Checked then
1646              begin              begin
1647                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1683  begin Line 1654  begin
1654            end            end
1655            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1656            begin            begin
1657              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1658              if Storepakker1.Checked then              if Storepakker1.Checked then
1659              begin              begin
1660                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1808  begin Line 1779  begin
1779            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1780            begin            begin
1781              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1782              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1783  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1784  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1785  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1786              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1787            end            end
1788            else     // kun idag            else     // kun idag
1789            begin            begin
# Line 2005  begin Line 1976  begin
1976      01 :      01 :
1977            begin;      // NS            begin;      // NS
1978              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1979              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1980              OpdaterListenButton01.Enabled := true;              OpdaterListenButton01.Enabled := true;
1981              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1982              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
# Line 2021  begin Line 1992  begin
1992              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1993              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1994              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1995              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1996              OpdaterListenButton01.Enabled := true;              OpdaterListenButton01.Enabled := true;
1997              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1998              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
# Line 2038  begin Line 2009  begin
2009              begin              begin
2010                DownloadButton03.Visible := false;                DownloadButton03.Visible := false;
2011              end;              end;
2012              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2013              OpdaterListenButton01.Enabled := true;              OpdaterListenButton01.Enabled := true;
2014              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2015              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
# Line 2059  begin Line 2030  begin
2030              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2031              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2032              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2033              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2034              OpdaterListenButton01.Enabled := true;              OpdaterListenButton01.Enabled := true;
2035              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2036              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
# Line 2180  begin Line 2151  begin
2151       begin       begin
2152         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2153         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2154           RuteNummer := PakkeshopLabel.Koreliste;
2155    
2156         PrintPakkeshopLabel( PakkeshopLabel );         PrintPakkeshopLabel( PakkeshopLabel );
2157    
# Line 2335  pakkeForkertSted : Integer; Line 2307  pakkeForkertSted : Integer;
2307    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2308  begin  begin
2309    if Budlevering1.Checked then    if Budlevering1.Checked then
2310       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2311    
2312    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2313    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2391  begin Line 2363  begin
2363            PrintNyLabel := true;            PrintNyLabel := true;
2364            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2365            nyFarve := Farve;            nyFarve := Farve;
2366            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2367            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2368            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2369            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2682  begin Line 2654  begin
2654          // Tjekker UrlNormal          // Tjekker UrlNormal
2655          if PanelValg1.Enabled = true then          if PanelValg1.Enabled = true then
2656          begin          begin
2657            if CheckUrl(UrlNormal) then            if TUtils.CheckUrl(UrlNormal) then
2658            begin            begin
2659              logTekst := 'UrlNormal accepteret: ' + UrlNormal;              logTekst := 'UrlNormal accepteret: ' + UrlNormal;
2660              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2711  begin Line 2683  begin
2683          // Tjekker UrlReturDAO          // Tjekker UrlReturDAO
2684          if PanelValg2.Enabled = true then          if PanelValg2.Enabled = true then
2685          begin          begin
2686            if CheckUrl(UrlReturDAO) then            if TUtils.CheckUrl(UrlReturDAO) then
2687            begin            begin
2688              logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;              logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;
2689              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2739  begin Line 2711  begin
2711          // Tjekker UrlReturBoghandler          // Tjekker UrlReturBoghandler
2712          if PanelValg3.Enabled = true then          if PanelValg3.Enabled = true then
2713          begin          begin
2714            if CheckUrl(UrlReturBoghandler) then            if TUtils.CheckUrl(UrlReturBoghandler) then
2715            begin            begin
2716              logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;              logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;
2717              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2767  begin Line 2739  begin
2739          // Tjekker UrlBudlevering          // Tjekker UrlBudlevering
2740          if PanelValg4.Enabled = true then          if PanelValg4.Enabled = true then
2741          begin          begin
2742            if CheckUrl(UrlBudlevering) then            if TUtils.CheckUrl(UrlBudlevering) then
2743            begin            begin
2744              logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;              logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;
2745              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2795  begin Line 2767  begin
2767          // Tjekker UrlPakkeshoplevering          // Tjekker UrlPakkeshoplevering
2768          if PanelValg5.Enabled = true then          if PanelValg5.Enabled = true then
2769          begin          begin
2770            if CheckUrl(UrlPakkeshoplevering) then            if TUtils.CheckUrl(UrlPakkeshoplevering) then
2771            begin            begin
2772              logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;              logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;
2773              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2823  begin Line 2795  begin
2795          // Tjekker UrlReturPakkeshop          // Tjekker UrlReturPakkeshop
2796          if PanelValg6.Enabled = true then          if PanelValg6.Enabled = true then
2797          begin          begin
2798            if CheckUrl(UrlReturPakkeshop) then            if TUtils.CheckUrl(UrlReturPakkeshop) then
2799            begin            begin
2800              logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;              logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;
2801              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2852  begin Line 2824  begin
2824          if (PanelValg1.Enabled = true)          if (PanelValg1.Enabled = true)
2825          or (PanelValg4.Enabled = true) then          or (PanelValg4.Enabled = true) then
2826          begin          begin
2827            if CheckUrl(UrlManglendeScanninger) then            if TUtils.CheckUrl(UrlManglendeScanninger) then
2828            begin            begin
2829              logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;              logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;
2830              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2880  begin Line 2852  begin
2852          // Tjekker UrlPakkeshopManglendeScanninger          // Tjekker UrlPakkeshopManglendeScanninger
2853          if PanelValg5.Enabled = true then          if PanelValg5.Enabled = true then
2854          begin          begin
2855            if CheckUrl(UrlPakkeshopManglendeScanninger) then            if TUtils.CheckUrl(UrlPakkeshopManglendeScanninger) then
2856            begin            begin
2857              logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;              logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;
2858              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2908  begin Line 2880  begin
2880          // Tjekker UrlPakkeshopManglendeReturScanninger          // Tjekker UrlPakkeshopManglendeReturScanninger
2881          if PanelValg6.Enabled = true then          if PanelValg6.Enabled = true then
2882          begin          begin
2883            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then            if TUtils.CheckUrl(UrlPakkeshopManglendeReturScanninger) then
2884            begin            begin
2885              logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;              logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;
2886              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2933  begin Line 2905  begin
2905            end;            end;
2906          end;          end;
2907    
2908           // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2909            if PanelValg7.Enabled = true then
2910            begin
2911              if TUtils.CheckUrl(UrlIndleveringsPakke) then
2912              begin
2913                logTekst := 'UrlIndleveringsPakke accepteret: ' + UrlIndleveringsPakke;
2914                SkrivScanningLogFil(logTekst);
2915              end
2916              else
2917              begin
2918                inc(urlFejl);   // Optæller antal fejl
2919                logTekst := 'UrlIndleveringsPakke svarer ikke: ' + UrlIndleveringsPakke;
2920                ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2921                if TjekUrls = '1' then
2922                begin
2923                  logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2924                end;
2925                SkrivScanningLogFil(logTekst);
2926                if TjekUrls = '1' then
2927                begin
2928                  ShowMessage(logTekst);
2929                  UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2930                  Application.Terminate;
2931                  exit;
2932                end;
2933              end;
2934    
2935              if TUtils.CheckUrl(UrlIndleveringsPakkeManglendeScanninger) then
2936              begin
2937                logTekst := 'UrlIndleveringsPakkeManglendeScanninger accepteret: ' + UrlIndleveringsPakkeManglendeScanninger;
2938                SkrivScanningLogFil(logTekst);
2939              end
2940              else
2941              begin
2942                inc(urlFejl);   // Optæller antal fejl
2943                logTekst := 'UrlIndleveringsPakkeManglendeScanninger svarer ikke: ' + UrlIndleveringsPakkeManglendeScanninger;
2944                ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2945                if TjekUrls = '1' then
2946                begin
2947                  logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2948                end;
2949                SkrivScanningLogFil(logTekst);
2950                if TjekUrls = '1' then
2951                begin
2952                  ShowMessage(logTekst);
2953                  UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2954                  Application.Terminate;
2955                  exit;
2956                end;
2957              end;
2958            end;
2959    
2960          // Tjekker UrlEKLoverforsel          // Tjekker UrlEKLoverforsel
2961          if PanelValg1.Enabled = true then          if PanelValg1.Enabled = true then
2962          begin          begin
2963            if CheckUrl(UrlEKLoverforsel) then            if TUtils.CheckUrl(UrlEKLoverforsel) then
2964            begin            begin
2965              logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;              logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;
2966              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2965  begin Line 2989  begin
2989          // Tjekker UrlEKLoverforselPakkeshop          // Tjekker UrlEKLoverforselPakkeshop
2990          if PanelValg5.Enabled = true then          if PanelValg5.Enabled = true then
2991          begin          begin
2992            if CheckUrl(UrlEKLoverforselPakkeshop) then            if TUtils.CheckUrl(UrlEKLoverforselPakkeshop) then
2993            begin            begin
2994              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;
2995              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2992  begin Line 3016  begin
3016    
3017    
3018          // Tjekker UrlFindPakketype          // Tjekker UrlFindPakketype
3019          if CheckUrl(UrlFindPakketype) then          if TUtils.CheckUrl(UrlFindPakketype) then
3020          begin          begin
3021            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;
3022            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
# Line 3017  begin Line 3041  begin
3041          end;          end;
3042    
3043          // Tjekker UrlSendPrograminfo          // Tjekker UrlSendPrograminfo
3044          if CheckUrl(UrlSendPrograminfo) then          if TUtils.CheckUrl(UrlSendPrograminfo) then
3045          begin          begin
3046            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;
3047            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
# Line 3142  begin Line 3166  begin
3166  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
3167    if Farve <> '' then    if Farve <> '' then
3168    begin    begin
3169       MainForm.Color := HexToTColor(Farve);       MainForm.Color := TUtils.HexToTColor(Farve);
3170  // 20150312: start  // 20150312: start
3171  (*  (*
3172    end    end
# Line 3216  end; Line 3240  end;
3240    
3241  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
3242  begin  begin
 // 20150311: start  
 (*  
   if PanelValgA.Color = clBtnFace then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
3243  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
3244  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
3245       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
3246       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
3247       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
3248  // 20150311: slut  
3249    
3250    
3251  end;  end;
3252    
3253  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3342  begin Line 3353  begin
3353    end;    end;
3354  end;  end;
3355    
3356  {  
  VERY fast split function  
  this function returns part of a string based on  
  constant defineable delimiters, such as ";". So  
  SPLIT('this is a test ',' ',3) = 'is' or  
  SPLIT('data;another;yet;again;more;',';',4) = 'yet'  
   
  Split function shifts index integer by two to  
  be compatible with commonly used PD split function  
  gpl 2004 / Juhani Suhonen  
 }  
 function TMainForm.split(input: string; schar: Char; s: Integer): string;  
 var  
   c: array of Integer;  
   b, t: Integer;  
 begin  
   Dec(s, 2);  // for compatibility with very old & slow split function  
   t := 0;     // variable T needs to be initialized...  
   setlength(c, Length(input));  
   for b := 0 to pred(High(c)) do  
   begin  
     c[b + 1] := posex(schar, input, succ(c[b]));  
     // BREAK LOOP if posex looped (position before previous)  
     // or wanted position reached..  
     if (c[b + 1] < c[b]) or (s < t) then break  
     else  
       Inc(t);  
   end;  
   Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));  
 end;  
3357    
3358  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3359  const  const
# Line 3380  var Line 3362  var
3362   tekst, filversion : String;   tekst, filversion : String;
3363  begin  begin
3364    
3365    filversion := Sto_GetFmtFileVersion('');    filversion := TUtils.Sto_GetFmtFileVersion('');
3366    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
3367    
3368    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3402  begin Line 3384  begin
3384          end          end
3385          else          else
3386          begin          begin
3387            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3388          end;          end;
3389      end      end
3390      else      else
3391      begin      begin
3392        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3393      end;      end;
3394    end;    end;
3395    
# Line 3475  begin Line 3457  begin
3457    
3458    if FileExists(fileName) then    if FileExists(fileName) then
3459    begin    begin
3460      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3461      begin      begin
3462        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3463        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3499  begin Line 3481  begin
3481    
3482    if FileExists(fileName) then    if FileExists(fileName) then
3483    begin    begin
3484      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3485      begin      begin
3486        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3487        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3658  begin Line 3640  begin
3640        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3641        ListBox1.Visible := true;        ListBox1.Visible := true;
3642        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3643        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3644        OpdaterListenButton01.Enabled := true;        OpdaterListenButton01.Enabled := true;
3645        DownloadButton03.Visible := false;        DownloadButton03.Visible := false;
3646        EKLoverforsel.Enabled := false;        EKLoverforsel.Enabled := false;
# Line 3694  begin Line 3676  begin
3676        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3677        ListBox1.Visible := true;        ListBox1.Visible := true;
3678        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3679        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3680        OpdaterListenButton01.Enabled := true;        OpdaterListenButton01.Enabled := true;
3681    
3682        EKLoverforsel.Enabled := true;        EKLoverforsel.Enabled := true;
# Line 3731  begin Line 3713  begin
3713        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3714        ListBox1.Visible := true;        ListBox1.Visible := true;
3715        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3716        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3717        OpdaterListenButton01.Enabled := true;        OpdaterListenButton01.Enabled := true;
3718        EKLoverforsel.Enabled := false;        EKLoverforsel.Enabled := false;
3719        InitLillePakke();        InitLillePakke();
# Line 3778  begin Line 3760  begin
3760        ListBox1.Visible := true;        ListBox1.Visible := true;
3761        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3762    
3763        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3764        OpdaterListenButton01.Enabled := true;        OpdaterListenButton01.Enabled := true;
3765        EKLoverforsel.Enabled := false;        EKLoverforsel.Enabled := false;
3766        InitLillePakke();        InitLillePakke();
# Line 3818  begin Line 3800  begin
3800  // 20150310: slut  // 20150310: slut
3801  end;  end;
3802    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = ''): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Integer;  
 begin  
   // set default value  
   Result := '';  
   // get filename of exe/dll if no filename is specified  
   sFileName := Trim(FileName);  
   if (sFileName = '') then  
     sFileName := GetModuleName(HInstance);  
   // get size of version info (0 if no version info exists)  
   iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);  
   if (iBufferSize > 0) then  
   begin  
     GetMem(pBuffer, iBufferSize);  
     try  
     // get fixed file info (language independent)  
     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);  
     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);  
     // read version blocks  
     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     finally  
       FreeMem(pBuffer);  
     end;  
3803    
     // format result string  
     Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);  
   
   end;  
 end;  
3804    
3805  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3806  begin  begin
# Line 4056  begin Line 3985  begin
3985    else    else
3986      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3987  }  }
3988    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3989    
3990    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3991    CheckCode();    CheckCode();
# Line 4064  end; Line 3993  end;
3993    
3994  end;  end;
3995    
 function TMainForm.BarCodeValid (ACode: string): boolean;  
 var  
    I: integer;  
    SumOdd, SumEven: integer;  
    ADigit, AChecksumDigit: integer;  
 begin  
    SumOdd := 0;  
    SumEven := 0;  
    for I := 1 to (Length (ACode) - 1) do begin  
       ADigit := StrToIntDef (ACode [I], 0);  
       if (I MOD 2 = 0) then begin  
          SumEven := SumEven + ADigit;  
       end else begin  
          SumOdd := SumOdd + ADigit;  
       end; {if}  
    end; {for}  
    AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);  
    Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);  
 end; {--BarCodeValid--}  
   
 { used for EAN 8/13 }  
 function TMainForm.CheckSumModulo10(const data:string):string;  
         var i,fak,sum : Integer;  
 begin  
         sum := 0;  
         fak := Length(data);  
         for i:=1 to Length(data) do  
         begin  
                 if (fak mod 2) = 0 then  
                         sum := sum + (StrToInt(data[i])*1)  
                 else  
                         sum := sum + (StrToInt(data[i])*3);  
                 dec(fak);  
         end;  
         if (sum mod 10) = 0 then  
                 result := data+'0'  
         else  
                 result := data+IntToStr(10-(sum mod 10));  
 end;  
3996    
3997  //  //
3998  // Bladhus ***  // Bladhus ***
# Line 4580  begin Line 4470  begin
4470    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4471  end;  end;
4472    
4473  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4474  begin  begin
4475      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4476      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
# Line 4604  begin Line 4494  begin
4494      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4495  end;  end;
4496    
 function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;  
 var  
   S2: string;  
 begin  
   Result  := 0;  
   S2 := S + Border;  
   repeat  
     SetLength(A, Length(A) + 1);  
     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);  
     Delete(S2, 1,Length(a[Result] + Border));  
     Inc(Result);  
   until S2 = '';  
 end;  
4497    
4498  // ToDo: PrintPakkeshopLabel()  // ToDo: PrintPakkeshopLabel()
4499  procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);
# Line 4624  var Line 4501  var
4501    XForm, XFormOld: TXForm; //Bruges til rotate X-formation    XForm, XFormOld: TXForm; //Bruges til rotate X-formation
4502    Angle: integer;    Angle: integer;
4503    gMode: integer;    gMode: integer;
   BarcodeArea: TRect;  
4504    Dirigering: string;    Dirigering: string;
4505    
4506  begin  begin
# Line 4777  var Line 4653  var
4653        end;        end;
4654    
4655    
4656      if (Scanningtype = '6') then  
4657        if (Scanningtype = '7') then
4658         begin
4659          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4660         end
4661        else if (Scanningtype = '6') then
4662       begin       begin
4663        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4664       end       end
4665      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4666       begin       begin
4667        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4668       end       end
4669      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4670       begin       begin
# Line 4907  var Line 4788  var
4788  //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  //                    stregkoderMedTjekkodeArray[linienr] := stregkode;
4789                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4790                    begin                    begin
4791                      stregkoderMedTjekkodeArray[linienr] := split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet                      stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet
4792                    end                    end
4793                    else                    else
4794                    begin                    begin
# Line 5189  begin Line 5070  begin
5070          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
5071          S := buffer;          S := buffer;
5072          SetLength(A,0);          SetLength(A,0);
5073          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
5074          if (length(A) < 2) then          if (length(A) < 2) then
5075          begin          begin
5076            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
5077          end;          end;
5078            if (length(A) > 1) then            if (length(A) > 1) then
5079            begin            begin
# Line 5266  begin Line 5147  begin
5147          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
5148          S := buffer;          S := buffer;
5149          SetLength(A,0);          SetLength(A,0);
5150          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
5151          if (length(A) < 3) then          if (length(A) < 3) then
5152          begin          begin
5153            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
5154          end;          end;
5155          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
5156          begin          begin
# Line 5470  begin Line 5351  begin
5351    end;    end;
5352  end;  end;
5353    
 function TMainForm.AdobeReaderExists: Boolean;  
 var  
   AReg: TRegistry;  
 begin  
   result:= false;  
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
 end;  
5354    
5355    
 function TMainForm.CheckUrl(url:string):boolean;  
 var  
   hSession, hfile: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
5356    
 end;  
5357    
5358    
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
 begin  
    with Control do  
    begin  
      R := ClientRect;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;  
      rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;  
      Perform(EM_GETRECT, 0, lParam(@r)) ;  
      InflateRect(r, - 4, - 4) ;  
      Perform(EM_SETRECTNP, 0, lParam(@r)) ;  
      SetWindowRgn(Handle, rgn, True) ;  
      Invalidate;  
    end;  
 end;  
5359    
5360  procedure TMainForm.CheckPrintQue(tjektype : string);  procedure TMainForm.CheckPrintQue(tjektype : string);
5361  type  type

Legend:
Removed from v.2678  
changed lines
  Added in v.2694

  ViewVC Help
Powered by ViewVC 1.1.20