全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2737
推到 Plurk!
推到 Facebook!

Indy POP3範例程式[Delphi轉BCB]

答題得分者是:wyndog
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-30 22:04:22 IP:211.76.xxx.xxx 未訂閱
程式碼:http://delphi.ktop.com.tw/loadfile.php?TOPICID=23228682&CC=519498 該範例是一本Delphi/Kylix Indy網路程式設計這本書裡面的,但是他是pascal的語法,有一些不知道該怎麼轉換成BCB的,麻煩各位幫我看看。謝謝... 以下是我有問題的函式: Copy、inc在BCB裡該用什麼function 程式碼裡面有一段,請問self是什麼??
     String temp_filename ;
     ////////////////////////////////// Mail Title Rander.
     self.TMail_Frame1.Mail_digest.Lines.Clear;
     self.TMail_Frame1.Mail_digest.DefAttributes.Size = 10;
     self.TMail_Frame1.Mail_digest.Lines.Add("寄件者: "+From+"       收件者: "+Too+"       時間: "+ Date );
     self.TMail_Frame1.Mail_digest.SelStart = 0;
     self.TMail_Frame1.Mail_digest.SelLength = 7;
     self.TMail_Frame1.Mail_digest.SelAttributes.Style = [fsBold];
     self.TMail_Frame1.Mail_digest.SelStart = 8 + length(From) + 7;
     self.TMail_Frame1.Mail_digest.SelLength = 7;
     self.TMail_Frame1.Mail_digest.SelAttributes.Style = [fsBold];
     self.TMail_Frame1.Mail_digest.SelStart =  self.TMail_Frame1.Mail_digest.SelStart + 7 + length(Too) + 7;
     self.TMail_Frame1.Mail_digest.SelLength = 5;
     self.TMail_Frame1.Mail_digest.SelAttributes.Style = [fsBold];         self.TMail_Frame1.Mail_digest.Lines.Add("主旨: "+ subject);
     self.TMail_Frame1.Mail_digest.SelStart = length(self.TMail_Frame1.Mail_digest.Lines.Strings[0]);
     self.TMail_Frame1.Mail_digest.SelLength = 5;
     self.TMail_Frame1.Mail_digest.SelAttributes.Style = [fsBold];         /////////////////////////////////////// Decode Message Body;
     Gen_Temp_filename(temp_filename);
     // Msg.Body.SaveToFile(temp_filename);
     RAW.SaveToFile(temp_filename);
     self.TMail_Frame1.Mail_Stage.Navigate(temp_filename);
原始的程式還蠻長的,麻煩各位了,謝謝
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-01 09:32:20 IP:60.248.xxx.xxx 未訂閱
Copy Delphi 中的取字串某段,可以改用 AnsiMidStr(字串, 開始位置, 長度) Inc Inc 是加 1 的意思,所以就改用 或者是加 1 Inc(X) => x ; or x = x 1; Self 是自己的意思,BCB 好像是用 This 吧,有點忘記了 其實 Self 不加也可以啊
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-01 12:56:07 IP:211.76.xxx.xxx 未訂閱
引言: Copy Delphi 中的取字串某段,可以改用 AnsiMidStr(字串, 開始位置, 長度) Inc Inc 是加 1 的意思,所以就改用 或者是加 1 Inc(X) => x ; or x = x 1; Self 是自己的意思,BCB 好像是用 This 吧,有點忘記了 其實 Self 不加也可以啊
謝謝你的回答,但是BCB沒有AnsiMidStr()這個function,我找help也沒看到,請問該怎麼用?謝謝
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-01 13:11:55 IP:60.248.xxx.xxx 未訂閱
剛查了一下 BCB 裡叫 MidStr 用法一樣
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-01 15:21:49 IP:211.76.xxx.xxx 未訂閱
function TForm1.Decode_Msg_To_Lists(Msg: TIdMessage; MailSize:integer): integer;
var
   NewItem : TListItem;
   Subject, Too : string;
   MyData : Integer_Ptr;
begin
     subject := '';
     NewItem := Mail_ListItem.Items.Add;
     New(MyData);
     NewItem.Data := MyData;         case MSg.Priority of
          mpHighest, mpHigh:
                     begin
                          NewItem.ImageIndex := 0;
                          MyData^ := 0;
                     end;
          mpLow, mpLowest:
                 begin
                      NewItem.ImageIndex := 2;
                      MyData^ := 2;
                 end;
     else
         begin
              NewItem.ImageIndex := 1;
              MyData^ := 1;
         end;
     end;         //NewITem.ImageIndex :=
     //NewITem.Caption := '';         Too := DecodeHeader(Msg.From.Text);
     //Too := Msg.From.Text;
     //NewItem.Caption := Too;
     NewItem.SubItems.Add(Too);
     Subject := DecodeHeader(Msg.Subject);
     //Subject := Msg.Subject;
     NewItem.SubItems.Add(Subject);
     NewItem.SubItems.Add(DateToStr(Msg.Date));
     NewItem.SubItems.Add(IntToStr(MailSize));         Result := 0;
end;
再請問,上述程式碼中Integer_Ptr是什麼資料型態,我該怎麼改? 還有MyData^ := 2;中的"^"有是什麼意思?謝謝...
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-01 15:31:16 IP:60.248.xxx.xxx 未訂閱
引言: 再請問,上述程式碼中Integer_Ptr是什麼資料型態,我該怎麼改? 還有MyData^ := 2;中的"^"有是什麼意思?謝謝...
Integer_Ptr 單看名字,以及後來的用法 應該是指整數指標,所以,就是 int *MyData; "^" 就是指標,所以 MyData^ := 2; 就是 *MyData = 2;
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-01 15:50:49 IP:211.76.xxx.xxx 未訂閱
謝謝,但是我的問題還有 >> 我在>> 其中
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-07-01 16:10:16 IP:60.248.xxx.xxx 未訂閱
引言: 謝謝,但是我的問題還有 >> 我在>> 其中>< face="Verdana, Arial, Helvetica"> 你使用了 TIdMessage,那名字應該會是 IdMessage1 之類的名稱吧? 注意看看丟進 Decode_Msg_To_Lists 裡的 IdMessage 名字有沒有對到
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-07-01 16:25:20 IP:211.76.xxx.xxx 未訂閱
因為TIdMessage的Name我改成IdMessage,我找不到其他的解決方法,麻煩了,謝謝
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-07-01 16:44:36 IP:60.248.xxx.xxx 未訂閱
引言: 因為TIdMessage的Name我改成IdMessage,我找不到其他的解決方法,麻煩了,謝謝
不然就自己寫啊
use TIdMessage;
var
  IdMessage: TIdMessage;
begin
  IdMessage := TIdMessage.Create;
end;
這樣就不會有這個問題了吧,呵呵
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-07-01 18:09:40 IP:211.76.xxx.xxx 未訂閱
引言:
引言: 因為TIdMessage的Name我改成IdMessage,我找不到其他的解決方法,麻煩了,謝謝
不然就自己寫啊
use TIdMessage;
var
  IdMessage: TIdMessage;
begin
  IdMessage := TIdMessage.Create;
end;
這樣就不會有這個問題了吧,呵呵
是我自己沒注意看,原來是我function裡面傳值傳錯了 現在可以把信件的標題收下來了,只是還有一些小問題...
系統時間:2024-04-29 23:05:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!