Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 12:58   #1
xJohnx
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 80
По умолчанию Инди 10, чтение писем (ЧарСет)

Создал почтовій клиент, а вот чтение писем у меня читает не нормально...
из слова привет -получается ="Рётчф"
Нашел модуль декодирования- кто сможет разобратся- пишите=)
Помогите правельно приминтить ...
xJohnx вне форума Ответить с цитированием
Старый 03.06.2010, 13:30   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Код:
msg.charSet:='koi8-R'
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 03.06.2010, 20:21   #3
xJohnx
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 80
По умолчанию

var
Form2: TForm2;
implementation
uses
unit1,unit3,unit4, Unit8,Decodemod;
{$R *.dfm}
var stop: boolean = false;
procedure ChangeLDConfig; //процедура записи папок
var
config:TiniFile;//ini файл
i:Integer;
begin
Config:=Tinifile.Create(ExtractFile Path(application.ExeName)+'Config.i ni');//создаем iniфайл
for i:=0 to form2.treeview1.Items[0].Count-1 do
Config.Writestring('Start',inttostr (i),form2.treeview1.Items[0][i].Text); //записывем папки в этот файл
Config.Writeinteger('Start','Count' ,form2.treeview1.Items[0].Count);
config.Free; //закрываем файл
end;

procedure LoadConfig;
var //загружаем данные из этого файла
configR:TiniFile;
c,i:Integer;
begin
ConfigR:=Tinifile.Create(ExtractFil ePath(application.ExeName)+'Config. ini');
c := ConfigR.Readinteger('Start','Count' ,0);
for i:=0 to c-1 do
form2.treeview1.Items.AddChild(form 2.treeview1.Items[0],configr.ReadString('Start',Inttost r(i),'0'));
configR.Free;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ChangeLDConfig; // и заносим информацию в ini файл
form1.POP31.Disconnect; //при закрытии формы 2 закрываем приложение
Application.Terminate;
end;

procedure TForm2.ListBox1Click(Sender: TObject);
begin
form1.IdMessage1.Clear; // очистка буфера для сообщения
form1.POP31.Retrieve(form1.pop31.Ch eckMessages-Listbox1.Itemindex,form1.IdMessage1 );// получение сообщения
label2.Caption:=form1.IdMessage1.Fr om.Name; //имя отправителя
label4.Caption:=form1.IdMessage1.Fr om.Address; //адрес

memo1.Clear; //чистим мемо
memo1.Lines.AddStrings(form1.IdMess age1.Body);//записываем сообщение в мемо
end;

procedure TForm2.N1Click(Sender: TObject);
begin
form3.ShowModal;
end;

procedure TForm2.N2Click(Sender: TObject);
begin
form1.pop31.Delete(form1.pop31.Chec kMessages-Listbox1.Itemindex); //удаляем сообщение
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
form4.LoadAdres; //загруж. данныые из ini
end;

procedure TForm2.FormShow(Sender: TObject);
begin
LoadConfig; //загруж. данныые из ini
end;


procedure TForm2.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
i:Integer;
begin
end;

procedure TForm2.TreeView1DblClick(Sender: TObject);
var
i:Integer;
begin
listbox1.Clear; //чистим лист бокс
treeview1.Items[0].Text:= 'Входящие'+ ' 0'+'/'+Inttostr(form1.POP31.CheckMessage s);
if form2.TreeView1.Selected.Text='Отпр авленные' then //если нажали на отправленные то
form4.LoadAdres else //загружаем отправленные
if form2.TreeView1.Items[0].Selected then //если нажали на входящие то
LoadAllMessages
else
if treeview1.Items[0].Count>0 //если есть папки и невыделено входящие
then
LoadSelMessages;
end;

//процедура загрузки всех писем
procedure TForm2.LoadAllMessages;
var
i:Integer; ss:string;
begin
treeview1.Enabled:=false;//делаем недоступным treeview
for i:=form1.pop31.CheckMessages downto form1.pop31.CheckMessages-10 do // цикл получения писем
begin
form1.IdMessage1.Clear; // очистка буфера для сообщения
form1.POP31.Retrieve(i,form1.IdMess age1);//получение сообщения
ss:= decod(form1.IdMessage1.Subject);
listbox1.items.add(form1.IdMessage1 .Subject);
application.ProcessMessages;
end;
form2.TreeView1.Enabled:=true;
end;


//загрузка писем по папкам
procedure TForm2.LoadSelMessages;
var
i:Integer; ss:string;
begin
treeview1.Enabled:=false;//делаем недоступным treeview
for i:=form1.pop31.CheckMessages downto form1.pop31.CheckMessages-10 do
begin
form1.IdMessage1.Clear; // очистка буфера для сообщения
form1.POP31.Retrieve(i,form1.IdMess age1);//получение сообщения
if (pos(treeview1.Items[0][treeview1.Selected.Index].Text,form1.IdMessage1.From.Name)<> 0) and (form2.TreeView1.Items[0].Selected=false) then //если папка с таким именем есть то


ss:= decod(form1.IdMessage1.Subject);
listbox1.items.add(ss);
application.ProcessMessages;
end;
form2.TreeView1.Enabled:=true;
куда мне вписать декодирование???
end;
xJohnx вне форума Ответить с цитированием
Старый 03.06.2010, 20:22   #4
xJohnx
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 80
По умолчанию

КУДА МНЕ НАПИСАТЬ ТО ЧТО ТЫ МНЕ НАПИСАЛ?
xJohnx вне форума Ответить с цитированием
Старый 03.06.2010, 20:30   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

там есть комментарии, и стоит разобрать код.
а не тупо копировать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.06.2010, 21:19   #6
xJohnx
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 80
По умолчанию

причем тут мои комменты, я говорю как приминить кодировку к коду, а что-то вообще не в тему написал!!!
xJohnx вне форума Ответить с цитированием
Старый 03.06.2010, 21:30   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

IdMessage1.charset:='koi8-r';
вставьте в OnCreate
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.06.2010, 12:43   #8
xJohnx
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 80
По умолчанию

не работает!
xJohnx вне форума Ответить с цитированием
Старый 04.06.2010, 12:45   #9
xJohnx
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 80
По умолчанию

нужно узнать в какой кодировке пришло сообщение и перекодировать в
"koi8-r", как это сделать- я не знаю?
xJohnx вне форума Ответить с цитированием
Старый 04.06.2010, 13:26   #10
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Код:
form1.IdMessage1.Clear; // очистка буфера для сообщения
form1.IdMessage1.charset:='koi8-r';
form1.POP31.Retrieve(i,form1.IdMess age1);//получение сообщения
кодировок бывает много попробуй windows-1251 если не поможит
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инди не принимает куки schnaps Работа с сетью в Delphi 2 14.07.2009 16:18
Чтение, чтение и еще раз чтение Alex Cones Общие вопросы Delphi 3 07.06.2009 15:28
Общение Инди сервера с инди клиентом Suter Компоненты Delphi 1 23.02.2009 20:04
Компоненты Инди Rusl92 Компоненты Delphi 1 11.04.2008 01:13
Странности инди и примеров по инди oleg kutkov Работа с сетью в Delphi 2 18.07.2007 14:06