--- dao/DelphiScanner/Main.pas 2015/10/22 14:06:23 2756 +++ dao/DelphiScanner/Main.pas 2015/12/06 15:23:50 2792 @@ -25,7 +25,8 @@ ParentForm, LabelPrint, Configuration, - Vcl.Imaging.pngimage + Vcl.Imaging.pngimage, + Generics.Collections ; @@ -104,6 +105,7 @@ PanelManglendePakker5: TPanel; PanelManglendePakker6: TPanel; menuIndlevering: TMenuItem; + chkForstorTilDirekte: TCheckBox; @@ -1377,19 +1379,19 @@ Pakkescanningtype := Scanningtype; end; - if ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) - or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) - or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) - or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) - or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) - or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) then + if ( ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) ) + or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) ) + or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) ) + or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) ) + or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) ) + or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then begin // Her skal komme en alarm og rød skærm VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' ); exit; end; - if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then + if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then begin GemStregkode := Stregkode; if Pakketype = 'NatXpress' then @@ -1423,7 +1425,8 @@ else begin // Her skal komme en alarm og rød skærm - VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' ); + //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' ); + VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' ); exit; end; @@ -3085,6 +3088,10 @@ BtnEKLoverforsel.Enabled := true; InitLillePakke(); ListBox1.Items.Clear; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + if BladhusSted = 0 then begin IndlesScanningLogFil(); @@ -3116,6 +3123,10 @@ ListBox1.Items.Clear; ListBox2.Items.Clear; BtnEKLoverforsel.Enabled := false; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + InitLillePakke(); end; @@ -3142,6 +3153,10 @@ ListBox1.Items.Clear; ListBox2.Items.Clear; BtnEKLoverforsel.Enabled := false; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + InitLillePakke(); end; @@ -3173,6 +3188,10 @@ BtnEKLoverforsel.Enabled := false; IdFTP1.Passive := true; IdFTP1.PassiveUseControlHost := true; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := true; + if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then begin IndlesScanningLogFil(); @@ -3208,6 +3227,9 @@ BtnEKLoverforsel.Enabled := true; + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := true; + InitLillePakke(); IndlesScanningLogFil(); if BladhusSted = 0 then @@ -3243,6 +3265,11 @@ BtnDownloadKontrolfil.Enabled := false; BtnOpdaterListen.Enabled := true; BtnEKLoverforsel.Enabled := false; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + + InitLillePakke(); IndlesScanningLogFil(); if BladhusSted = 0 then @@ -3290,6 +3317,11 @@ BtnDownloadKontrolfil.Enabled := false; BtnOpdaterListen.Enabled := true; BtnEKLoverforsel.Enabled := false; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + + InitLillePakke(); IndlesScanningLogFil(); if BladhusSted = 0 then @@ -4033,16 +4065,25 @@ stregkode, modtagernavn, modtageradresse, kommentar : string; pakketype, tjekkodestatus : String; pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer; - pakketyper : TStrings; + //pakketyper : TStrings; + pakketyper : TDictionary; + tmpAntal : Integer; + + + antlin : Integer; antlinIdag, antlinSenere : Integer; - XmlFelter : TStrings; + //XmlFelter : TStrings; + XmlFelter : TDictionary; begin - XmlFelter := TStringList.Create; - pakketyper := TStringList.Create; + + + XmlFelter := TDictionary.Create; + pakketyper := TDictionary.Create; + linienr := 0; ListBox2.Clear; ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget'); @@ -4057,6 +4098,8 @@ StedKode := Sted; end; + Application.Processmessages; //Ugly Hack to improve User Experience when switching modes + if (Scanningtype = '7') then @@ -4116,26 +4159,31 @@ if Node.NodeType = ntElement then begin if Node.NodeName = 'Stregkode' then begin - antlin := antlin + 1; + Inc(antlin); // 20150306: start if not VarIsNull(Node.NodeValue) then begin if (pos('(', Node.NodeValue) = 0) then begin - antlinIdag := antlinIdag + 1; + Inc(antlinIdag); end else begin - antlinSenere := antlinSenere + 1; + Inc(antlinSenere); end; end; // 20150306: slut end; end; - if (XmlFelter.values[Node.NodeName] <> '') then - XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1) + if ( XmlFelter.ContainsKey(Node.NodeName) ) then + begin + XmlFelter.TryGetValue(Node.NodeName, tmpAntal); + XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1); + end else - XmlFelter.values[Node.NodeName] := '1'; + begin + XmlFelter.Add(Node.NodeName, 1); + end; end; antalLiniefelter := XmlFelter.Count; @@ -4143,6 +4191,9 @@ SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array + + Application.Processmessages; //Ugly Hack to improve User Experience when switching modes + logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget'; if (antlinSenere > 0) then begin @@ -4178,10 +4229,13 @@ if not VarIsNull(Node.NodeValue) then pakketype := Node.NodeValue; antalFelterFundet := antalFelterFundet + 1; - if (pakketyper.values[pakketype] <> '') then - pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1) + if ( pakketyper.ContainsKey(pakketype) ) then + begin + pakketyper.TryGetValue(pakketype, tmpAntal); + pakketyper.AddOrSetValue(pakketype, tmpAntal + 1); + end else - pakketyper.values[pakketype] := '1'; + pakketyper.Add(pakketype, 1); end; if Node.NodeName = 'TjekkodeStatus' then begin if not VarIsNull(Node.NodeValue) then @@ -4216,13 +4270,21 @@ end; end; end; - for pakketypeix := 0 to pakketyper.Count-1 do - begin - ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget'); - end; - // Free up the list object + Application.Processmessages; //Ugly Hack to improve User Experience when switching modes + + + for pakketype in pakketyper.Keys do + begin + pakketyper.TryGetValue(pakketype, tmpAntal); + ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget'); + end; + + // Free up the dictionary object pakketyper.Free; + + + // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.'); logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget'; if (antlinSenere > 0) then