我在使用下面的StoredPathName
代码时遇到问题。由于Indy 10不使用StoredPathName
,我不知道如何更改此代码以从V9调整到V10。下面的代码不是由我编写的,当涉及到这种类型的代码时,我仍然是一个新手,所以我很欣赏一个代码示例,展示如何在可能的情况下纠正问题。
vlist:TStringList;
...
for j:=numEmails downto 1 do
begin
Msg.Clear;
Retrieve(j,Msg);
for k:=0 to Msg.MessageParts.Count-1 do
with Msg.MessageParts[k] do
if Msg.messageParts[k] is TIdAttachmentFile then
begin
//Get the name of the file that was sent.
aname := TIdAttachmentFile(Msg.MessageParts[k]).FileName;
if SameText(aname,ExtractFilename(PacketFilename))
and FileExists(Longfilename(StoredPathName)) then
begin
//Read attachment and do call-back if defined.
vlist.LoadfromFile(LongFilename(StoredPathName));
if assigned(OnReceive) then
OnReceive;
end
end;
end;
Disconnect;
except
on E:Exception do
result := E.Message;
end;
还有一点代码是...... Connect(9000);
由于9000不是允许的参数,我只是将其更改为Connect;
那可以吗?
答案 0 :(得分:1)
StoredPathName是从TIdMessagePart移至TIdAttachmentFile的属性。如果您更改代码以在顶部执行类型转换,则它应该都可以正常工作。
改变这个:
with Msg.MessageParts[k] do
if Msg.messageParts[k] is TIdAttachmentFile then
为:
if Msg.messageParts[k] is TIdAttachmentFile then
with TIdAttachmentFile(Msg.MessageParts[k]) do