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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2015, 00:09   #1
Максим_maks
Пользователь
 
Регистрация: 18.01.2015
Сообщений: 51
По умолчанию Поправить код- открытие файла по очередно

Нашел такой код. Он полностью устраивает, за исключением того - как реализовать правильно: открыть сначала 1 файл поместить все в Memo, закрыть файл, открыть следующий и т.д.
Код:
procedure AllTXTtoMemo(Dir, Masc: string; Memo: TMemo);
var
  searchResult : TSearchRec;
  Buff: TStringList;
begin
  Memo.Clear;
  Buff := TStringList.Create;
  if Dir[Length(Dir)] <> '\' then
    Dir := Dir + '\';
  if Masc = '' then Masc := '*.*';
  if FindFirst(Dir + Masc, faAnyFile - faDirectory, searchResult) = 0 then
  begin
    repeat
      Buff.LoadFromFile(Dir + searchResult.Name);
      Memo.Lines.Add('------------------------------');
      Memo.Lines.AddStrings(Buff);
    until FindNext(searchResult) <> 0;
    FindClose(searchResult);
  end;
  Buff.Free;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
  AllTXTtoMemo('D:\1\', '*.eml', Memo);
end;

Последний раз редактировалось Stilet; 20.01.2015 в 07:51.
Максим_maks вне форума Ответить с цитированием
Старый 20.01.2015, 02:38   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Максим_maks Посмотреть сообщение
Нашел такой код. Он полностью устраивает, за исключением того - как реализовать правильно
Ну просто умора. Полностью устраивает, но не знаю как правильно реализовать.
Чем же он тогда полностью устраивает?
northener вне форума Ответить с цитированием
Старый 20.01.2015, 07:52   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
открыть сначала 1 файл поместить все в Memo, закрыть файл, открыть следующий и т.д.
А этот код что делает? Вроде как именно это же?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.01.2015, 14:12   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Максим_maks, данный код как раз и загружает все найденные файлы в одно Memo.
Что не так?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.01.2015, 14:22   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Что не так?!
Он его из интернетов скачал
Человек_Борща вне форума Ответить с цитированием
Старый 20.01.2015, 14:58   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Он его из интернетов скачал
да скачал и молодец!
Код то выглядит рабочим. Что автора топика в нём не устроило?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.01.2015, 15:03   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

По-моему автор уже давно разобрался.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.01.2015, 12:02   #8
Максим_maks
Пользователь
 
Регистрация: 18.01.2015
Сообщений: 51
По умолчанию

С кодом который наверху все Ок. Как его подружить с кодом ниже?
Код:
unit Unit1;
  
{$mode objfpc}{$H+}
  
interface
  
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, mimemess, mimepart, ExtCtrls, ComCtrls, ActiveX;
  
type
  
  { TForm1 }
  
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    Memo2: TMemo;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure GetParts(const part: TMimepart);
  private
    { private declarations }
  public
    { public declarations }
  end;
  
var
  Form1: TForm1;
    IdMes:TMimeMess;
  
implementation
  
{$R *.lfm}
  
{ TForm1 }
  
  
procedure TForm1.GetParts(const part: TMimepart);
var
  s: string;
  i: integer;
begin
  if (LowerCase(part.Primary)='text') and (LowerCase(part.FileName)='')  then  //Проверим  что данный блок - текст сообщения
  begin
  part.DecodePart;
    if LowerCase(part.Secondary)='plain'   then    // Определяем что это простой текст
         Memo1.Lines.LoadFromStream(part.DecodedLines); // Загружаем раскодированные данные
    end;
  
  for i := 0 to part.GetSubPartCount - 1 do
    GetParts( part.getsubpart(i));     // проверяем наличие следующего блока
end;
  
  
  
  
  
procedure TForm1.Button1Click(Sender: TObject);
  var
i:integer;
begin
  if OpenDialog1.Execute then
  begin
    IdMes:=TMimeMess.Create;
    IdMes.Lines.LoadFromFile(OpenDialog1.FileName);
  end;
    IdMes.DecodeMessage;     // Раскодируем сообщение, обязательно
    Memo2.Lines.Assign(IdMes.Header.CustomHeaders); // Заголовки, не спицифичные для формата MIME
    GetParts(IdMes.MessagePart);    // рекурсивная процедура обхода блоков сообщения
  
  
end;
  
  
end.
Максим_maks вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поправить код orandzheviyman Паскаль, Turbo Pascal, PascalABC.NET 8 15.11.2013 12:38
Нужно поправить код файла экспорта rss alexey_11 Помощь студентам 0 18.05.2010 10:43
поправить код! Cruelbob Общие вопросы C/C++ 6 12.05.2010 23:33
Нужно поправить код kimoncar PHP 0 13.04.2010 12:52
Поправить Код... Lucchese Общие вопросы C/C++ 1 25.01.2010 20:00