OSDN Git Service

SLPPのエラー処理の強化
authorC.Ponapalt <ponapalt@shillest.net>
Tue, 7 Sep 2004 08:51:17 +0000 (08:51 +0000)
committerC.Ponapalt <ponapalt@shillest.net>
Tue, 7 Sep 2004 08:51:17 +0000 (08:51 +0000)
bottleclient/Logs.pas
bottleclient/MainForm.pas

index e431df8..0dcda69 100755 (executable)
@@ -377,7 +377,7 @@ begin
   // \82±\82Ì\83\8d\83O\92\86\82Ì\83`\83\83\83\93\83l\83\8b\82ð\8eæ\82è\8fo\82·
   // TStrings\82Ì\8eÀ\91\95\82ÍTHashedStringList\90\84\8f§
   for i := 0 to Count-1 do begin
-    if Length(Bottles[i].Channel) > 0 then begin
+    if Bottles[i].Channel <> '' then begin
       if Target.IndexOf(Bottles[i].Channel) < 0 then begin
         Target.Add(Bottles[i].Channel);
       end;
@@ -391,7 +391,7 @@ begin
   // \82±\82Ì\83\8d\83O\92\86\82Ì\83S\81[\83X\83g\82ð\8eæ\82è\8fo\82·
   // TStrings\82Ì\8eÀ\91\95\82ÍTHashedStringList\90\84\8f§
   for i := 0 to Count-1 do begin
-    if Length(Bottles[i].Ghost) > 0 then begin
+    if Bottles[i].Ghost <> '' then begin
       if Target.IndexOf(Bottles[i].Ghost) < 0 then begin
         Target.Add(Bottles[i].Ghost);
       end;
index 6f5dfad..ab7d3b5 100755 (executable)
@@ -1421,15 +1421,24 @@ begin
         //\83\81\83b\83Z\81[\83W\8eó\90M
         DispatchBottle(EventType, HeadValue);
       end;
+
       etMemberCount: begin
+        //\91\8d\8eQ\89Á\8eÒ\90\94
         StatusBar.Panels[PanelMembers].Text := HeadValue['Num'] + '\90l'
       end;
+
       etChannelCount: begin
+        //\83`\83\83\83\93\83l\83\8b\95Ê\8eQ\89Á\8eÒ\90\94
         try
-          ChannelList.Channel[HeadValue['Channel']].Members := StrToInt(HeadValue['Num']);
+          if HeadValue['Channel'] <> '' then begin
+            if ChannelList.Channel[HeadValue['Channel']] <> nil then begin
+              ChannelList.Channel[HeadValue['Channel']].Members := StrToInt(HeadValue['Num']);
+            end;
+          end;
         except
         end;
       end;
+
       etConnectOk: begin
         ShowHintLabel('SSTP Bottle\83T\81[\83o\82Æ\92Ê\90M\8am\97§\81B');
         Added := true;
@@ -1437,34 +1446,50 @@ begin
         //\83`\83\83\83\93\83l\83\8b\8e©\93®\93o\98^
         if not Connecting then
           PostCommand(['Command: getChannels']);
-        SakuraSeeker.BeginDetect;
+        try
+          SakuraSeeker.BeginDetect;
+        except
+          on E: Exception do ShowHintLabel(E.Message,WarningColor);
+        end;
       end;
+
       etChannelList: begin
         UpdateJoinChannelList(HeadValue);
         // \8dÅ\8cã\82É\8eQ\89Á\82µ\82Ä\82¢\82½\83`\83\83\83\93\83l\83\8b\82ð\8bL\98^\82·\82é
         if JoinChannelsBackup = nil then JoinChannelsBackup := TStringList.Create;
         JoinChannelsBackup.Assign(JoinChannels);
       end;
+
       etCloseChannel: begin
-        with JoinChannels do
-          if IndexOf(HeadValue['Channel']) >= 0 then
-            Delete(IndexOf(HeadValue['Channel']));
-        with tabChannel do begin
-          if Tabs.IndexOf(HeadValue['Channel']) >= 0 then
-            Tabs.Delete(Tabs.IndexOf(HeadValue['Channel']));
-          if Tabs.Count > 0 then TabIndex := 0 else TabIndex := -1;
-          tabChannelChange(self);
+        //\83`\83\83\83\93\83l\83\8b\94p\8e~
+        if HeadValue['Channel'] <> '' then begin
+          with JoinChannels do
+            if IndexOf(HeadValue['Channel']) >= 0 then
+              Delete(IndexOf(HeadValue['Channel']));
+          with tabChannel do begin
+            if Tabs.IndexOf(HeadValue['Channel']) >= 0 then
+              Tabs.Delete(Tabs.IndexOf(HeadValue['Channel']));
+            if Tabs.Count > 0 then TabIndex := 0 else TabIndex := -1;
+            tabChannelChange(self);
+          end;
+          ShowHintLabel(HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½',
+                        WarningColor);
+          frmLog.AddCurrentSystemLog('SYSTEM', HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½');
+          frmMessageBox.ShowMessage(HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½');
         end;
-        ShowHintLabel(HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½',
-                      WarningColor);
-        frmLog.AddCurrentSystemLog('SYSTEM', HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½');
-        frmMessageBox.ShowMessage(HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½');
       end;
+
       etForceBroadcastInformation: begin
-        if HeadValue['Type'] = 'Vote' then begin
-          frmLog.VoteLog(HeadValue['MID'], StrToIntDef(HeadValue['Num'], 0));
-        end else if HeadValue['Type'] = 'Agree' then begin
-          frmLog.AgreeLog(HeadValue['MID'], StrToIntDef(HeadValue['Num'], 0));
+        //\93\8a\95[\81^\93¯\88Ó\81^\82»\82Ì\91¼\83u\83\8d\81[\83h\83L\83\83\83X\83g\8fî\95ñ
+        if HeadValue['MID'] <> '' then begin
+          try //Num\82ª\90\94\92l\82Å\82È\82©\82Á\82½\82Æ\82«\91Î\8dô
+            if HeadValue['Type'] = 'Vote' then begin
+              frmLog.VoteLog(HeadValue['MID'], StrToIntDef(HeadValue['Num'], 0));
+            end else if HeadValue['Type'] = 'Agree' then begin
+              frmLog.AgreeLog(HeadValue['MID'], StrToIntDef(HeadValue['Num'], 0));
+            end;
+          except
+          end;
         end;
       end;
     end;
@@ -1623,8 +1648,9 @@ begin
     Tabs.Clear;
     for i := 0 to JoinChannels.Count-1 do begin
       //\8eó\90M\90ê\97p\83`\83\83\83\93\83l\83\8b\82Í\95\\8e¦\82µ\82È\82¢
-      if not ChannelList.Channel[JoinChannels[i]].NoPost then
-        Tabs.Add(JoinChannels[i]);
+      if ChannelList.Channel[JoinChannels[i]] <> nil then
+        if not ChannelList.Channel[JoinChannels[i]].NoPost then
+          Tabs.Add(JoinChannels[i]);
     end;
     Tabs.EndUpdate;
     // \8c³\82©\82ç\83`\83\83\83\93\83l\83\8b\82É\8eQ\89Á\82µ\82Ä\82¢\82½\8fê\8d\87\82Í
@@ -1699,10 +1725,11 @@ var Opt: TSstpSendOptions;
     CueItem: TLogItem;
     ReplaceHash: THeadValue; 
 begin
+  Channel := Dat['Channel'];
+
   Opt := [];
   if Pref.NoTranslate then Opt := Opt + [soNoTranslate];
   if Pref.NoDescript  then Opt := Opt + [soNoDescript];
-  Channel := Dat['Channel'];
   case EventType of
     etScript: Sender := Channel;
     etForceBroadcast: Sender := '\81y\82¨\92m\82ç\82¹\81z';