⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dxgeneralmsgobject.pas

📁 Well known and usefull component for delphi 7
💻 PAS
📖 第 1 页 / 共 2 页
字号:
               if UseCurrentParseCode then
                  DXMsgObject_Record.esINREPLYTO:=DXMsgObject_Record.esINREPLYTO+WorkString
               else
                  DXMsgObject_Record.esINREPLYTO:=WorkString;
            12:// 'REFERENCES'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esREFERENCES:=DXMsgObject_Record.esREFERENCES+WorkString
               else
                  DXMsgObject_Record.esREFERENCES:=WorkString;
            13:// 'KEYWORDS'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esKEYWORDS:=DXMsgObject_Record.esKEYWORDS+WorkString
               else
                  DXMsgObject_Record.esKEYWORDS:=WorkString;
            14:// 'ENCRYPTED'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esENCRYPTED:=DXMsgObject_Record.esENCRYPTED+WorkString
               else
                  DXMsgObject_Record.esENCRYPTED:=WorkString;
            15:// 'SUBJECT'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esSubject[DXMsgObject_Record.esSubject.Count-1]:=
                     DXMsgObject_Record.esSubject[DXMsgObject_Record.esSubject.Count-1]+WorkString
               else
                  DXMsgObject_Record.esSubject.Append(WorkString);
            16:// 'COMMENTS'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esComments[DXMsgObject_Record.esComments.Count-1]:=
                     DXMsgObject_Record.esComments[DXMsgObject_Record.esComments.Count-1]+WorkString
               else
                  DXMsgObject_Record.esComments.Append(WorkString);
            17:// 'RESENT-REPLY-TO'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esRESENTREPLYTO:=DXMsgObject_Record.esRESENTREPLYTO+WorkString
               else
                  DXMsgObject_Record.esRESENTREPLYTO:=WorkString;
            18:// 'RESENT-FROM'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esRESENTFROM:=DXMsgObject_Record.esRESENTFROM+WorkString
               else
                  DXMsgObject_Record.esRESENTFROM:=WorkString;
            19:// 'RESENT-SENDER'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esRESENTSENDER:=DXMsgObject_Record.esRESENTSENDER+WorkString
               else
                  DXMsgObject_Record.esRESENTSENDER:=WorkString;
            20:// 'RESENT-DATE'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esRESENTDATE:=DXMsgObject_Record.esRESENTDATE+WorkString
               else
                  DXMsgObject_Record.esRESENTDATE:=WorkString;
            21:// 'RESENT-TO'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esRESENTTO:=DXMsgObject_Record.esRESENTTO+WorkString
               else
                  DXMsgObject_Record.esRESENTTO:=WorkString;
            22:// 'RESENT-CC'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esRESENTCC:=DXMsgObject_Record.esRESENTCC+WorkString
               else
                  DXMsgObject_Record.esRESENTCC:=WorkString;
            23:// 'RESENT-BCC'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esRESENTBCC:=DXMsgObject_Record.esRESENTBCC+WorkString
               else
                  DXMsgObject_Record.esRESENTBCC:=WorkString;
            24:// 'RESENT-MESSAGE-ID'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esRESENTMESSAGEID:=DXMsgObject_Record.esRESENTMESSAGEID+WorkString
               else
                  DXMsgObject_Record.esRESENTMESSAGEID:=WorkString;
            26:// 'MIME-VERSION'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esMIMEVERSION:=DXMsgObject_Record.esMIMEVERSION+WorkString
               else
                  DXMsgObject_Record.esMIMEVERSION:=WorkString;
            27:// 'CONTENT-TYPE'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esCONTENTTYPE:=DXMsgObject_Record.esCONTENTTYPE+WorkString
               else
                  DXMsgObject_Record.esCONTENTTYPE:=WorkString;
            28:// 'CONTENT-TRANSFER-ENCODING'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esCONTENTTRANSFERENCODING:=DXMsgObject_Record.esCONTENTTRANSFERENCODING+WorkString
               else
                  DXMsgObject_Record.esCONTENTTRANSFERENCODING:=WorkString;
            29:// 'PATH'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esPATH:=DXMsgObject_Record.esPATH+WorkString
               else
                  DXMsgObject_Record.esPATH:=WorkString;
            30:// 'LINES'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esLINES:=DXMsgObject_Record.esLINES+WorkString
               else
                  DXMsgObject_Record.esLINES:=WorkString;
            31:// 'NEWSGROUPS'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esNEWSGROUPS:=DXMsgObject_Record.esNEWSGROUPS+WorkString
               else
                  DXMsgObject_Record.esNEWSGROUPS:=WorkString;
            32:// 'DISTRIBUTION'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esDISTRIBUTION:=DXMsgObject_Record.esDISTRIBUTION+WorkString
               else
                  DXMsgObject_Record.esDISTRIBUTION:=WorkString;
            33:// 'ORGANIZATION'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esORGANIZATION:=DXMsgObject_Record.esORGANIZATION+WorkString
               else
                  DXMsgObject_Record.esORGANIZATION:=WorkString;
            34:// 'RELAY-VERSION'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esRELAYVERSION:=DXMsgObject_Record.esRELAYVERSION+WorkString
               else
                  DXMsgObject_Record.esRELAYVERSION:=WorkString;
            35:// 'NNTP-POSTING-HOST'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esNNTPPOSTINGHOST:=DXMsgObject_Record.esNNTPPOSTINGHOST+WorkString
               else
                  DXMsgObject_Record.esNNTPPOSTINGHOST:=WorkString;
            36:// 'EXPIRES'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esEXPIRES:=DXMsgObject_Record.esEXPIRES+WorkString
               else
                  DXMsgObject_Record.esEXPIRES:=WorkString;
            37:// 'FOLLOWUP-TO'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esFOLLOWUPTO:=DXMsgObject_Record.esFOLLOWUPTO+WorkString
               else
                  DXMsgObject_Record.esFOLLOWUPTO:=WorkString;
            38:// 'CONTROL'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esCONTROL:=DXMsgObject_Record.esCONTROL+WorkString
               else
                  DXMsgObject_Record.esCONTROL:=WorkString;
            39:// 'APPROVED'
               if UseCurrentParseCode then
                  DXMsgObject_Record.esAPPROVED:=DXMsgObject_Record.esAPPROVED+WorkString
               else
                  DXMsgObject_Record.esAPPROVED:=WorkString;
         else begin// unknown command - merge into "unknown stringlist"
               if WorkString<>'' then begin
                  if UseCurrentParseCode then
                     DXMsgObject_Record.esUnknown[DXMsgObject_Record.esUnknown.Count-1]:=
                        DXMsgObject_Record.esUnknown[DXMsgObject_Record.esUnknown.Count-1]+WorkString
                  else
                     DXMsgObject_Record.esUnknown.Append(CurrentParseCode+': '+WorkString);
               end;
            end;
         end;
         Header.Delete(0);
         cnt:=Header.Count;
      end;
   finally
      header.EndUpdate;
   end;
end;

procedure TDXGeneralMsgObject.HeaderClear; // 2.0
begin
   HeaderInitialize;
end;

{$HINTS OFF}

procedure TDXGeneralMsgObject.LoadFromStream(Stream:TStream);
var
   TSL:TStringList;
   Loop:Integer;

begin
   TSL:=TStringList.Create;
   try
      TSL.LoadFromStream(Stream);
      Loop:=0;
      while (Loop<TSL.Count)and(TSL[Loop]<>'') do
         Inc(Loop);

      while TSL.Count>Loop do
         TSL.Delete(TSL.Count-1);
      if TSL[Loop-1]='' then TSL.Delete(Loop-1);
      HeaderInitialize;
      HeaderProcess(TSL);
   finally
      TSL.Free;
      TSL:=nil;
   end;
end;

procedure TDXGeneralMsgObject.LoadFromFile(const Filename:string);
var
   TSL:TStringList;
   Loop:Integer;

begin
   TSL:=TStringList.Create;
   TSL.LoadFromFile(FileName);
   Loop:=0;
   while (Loop<TSL.Count)and(TSL[Loop]<>'') do
      Inc(Loop);
   while TSL.Count>Loop do
      TSL.Delete(TSL.Count-1);
   if TSL[Loop-1]='' then TSL.Delete(Loop-1);
   HeaderInitialize;
   HeaderProcess(TSL);
   TSL.Free;
   TSL:=nil;
end;
{$HINTS OFF}

procedure TDXGeneralMsgObject.SaveHeaderToList(var header:tstringlist);
var
   Loop:Integer;

begin
   if not Assigned(Header) then Exit;
   with DXMsgObject_Record^ do begin
      if esRECEIVED<>'' then Header.Append('Received: '+esReceived);
      if esRELAYVERSION<>'' then
         Header.Append('Relay-Version: '+esRelayVersion);
      if esMESSAGEID<>'' then Header.Append('Message-ID: '+esMessageID);
      if esPATH<>'' then Header.Add('Path: '+esPATH);
      if esTO<>'' then Header.Append('To: '+esTo);
      if esFROM<>'' then Header.Append('From: '+esFrom);
      if esRETURNPATH<>'' then Header.Append('Return-Path: '+esRETURNPATH);
      if esDATE<>'' then Header.Append('Date: '+esDATE);
      if esSENDER<>'' then Header.Append('Sender: '+esSENDER);
      if esCC<>'' then Header.Append('CC: '+esCC);
      if esBCC<>'' then Header.Append('BCC: '+esBCC);
      if esREPLYTO<>'' then Header.Append('Reply-To: '+esREPLYTO);
      if esLINES<>'' then Header.Add('Lines: '+esLINES);
      if esNEWSGROUPS<>'' then Header.Add('Newsgroups: '+esNEWSGROUPS);
      if esINREPLYTO<>'' then Header.Append('In-Reply-To: '+esINReplyTO);
      if esREFERENCES<>'' then Header.Append('References: '+esReferences);
      if esKEYWORDS<>'' then Header.Append('Keywords: '+esKEYWORDS);
      if esENCRYPTED<>'' then Header.Append('ENCRYPTED: '+esENCRYPTED);
      if esRESENTREPLYTO<>'' then
         Header.Append('Resent-Reply-To: '+esResentReplyTo);
      if esRESENTFROM<>'' then Header.Append('Resent-From: '+esRESENTFROM);
      if esRESENTSENDER<>'' then
         Header.Append('Resent-Sender: '+esRESENTSENDER);
      if esRESENTDATE<>'' then Header.Append('Resent-Date: '+esRESENTDATE);
      if esRESENTTO<>'' then Header.Append('Resent-TO: '+esRESENTTO);
      if esRESENTCC<>'' then Header.Append('Resent-CC: '+esRESENTCC);
      if esRESENTBCC<>'' then Header.Append('Resent-BCC: '+esRESENTBCC);
      if esRESENTMESSAGEID<>'' then
         Header.Append('Resent-Message-ID: '+esRESENTMESSAGEID);
      if esMIMEVERSION<>'' then Header.Append('MIME-Version: '+esMIMEVERSION);
      if esCONTENTTYPE<>'' then Header.Append('Content-Type: '+esCONTENTTYPE);
      if esCONTENTTRANSFERENCODING<>'' then
         Header.Append('Content-Transfer-Encoding: '+esCONTENTTRANSFERENCODING);
      if esDISTRIBUTION<>'' then Header.Append('Distribution: '+esDistribution);
      if esORGANIZATION<>'' then Header.Append('Organization: '+esOrganization);
      if esNNTPPOSTINGHOST<>'' then
         Header.Append('NNTP-Posting-Host: '+esNNTPPOSTINGHOST);
      if esEXPIRES<>'' then Header.Append('Expires: '+esEXPIRES);
      if esFOLLOWUPTO<>'' then Header.Append('Followup-To: '+esFOLLOWUPTO);
      if esCONTROL<>'' then Header.Append('Control: '+esCONTROL);
      if esAPPROVED<>'' then Header.Append('Approved: '+esAPPROVED);
      for Loop:=1 to esSUBJECT.count do
         Header.Append('Subject: '+esSUBJECT[Loop-1]);
      for Loop:=1 to esCOMMENTS.count do
         Header.Append('Comments: '+esCOMMENTS[Loop-1]);
      for Loop:=1 to esUNKNOWN.count do
         Header.Append(esUNKNOWN[Loop-1]);
   end;
end;

procedure TDXGeneralMsgObject.SaveToStream(Stream:TStream);
var
   TSL:TStringList;

begin
   TSL:=TStringList.Create;
   Stream.Seek(0, 0);
   SaveHeaderToList(TSL);
   TSL.SaveToStream(Stream);
   Stream.Seek(0, 0);
   TSL.Free;
   TSL:=nil;
end;

procedure TDXGeneralMsgObject.SaveToFile(const Filename:string);
var
   MemoryStream:TMemoryStream;

begin
   MemoryStream:=TMemoryStream.Create;
   SaveToStream(MemoryStream);
   MemoryStream.SaveToFile(FileName);
   MemoryStream.Free;
   MemoryStream:=nil;
end;

procedure TDXGeneralMsgObject.DeleteFile(const Filename:string);
begin
   DeleteFile(FileName);
end;

function TDXGeneralMsgObject.ActualHeader:PDXMsgObjectRecord;
begin
   Result:=DXMsgObject_Record;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -