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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 12:59   #1
Ozzzy
Новичок
Джуниор
 
Регистрация: 31.05.2010
Сообщений: 2
По умолчанию написать что обозначает каждая строчка

В общем есть код программы:
Код:
unit emailsMain; 

interface 

uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls, Buttons; 

type 
  TformMain = class(TForm) 
    memoText: TMemo; 
    memoEmails: TMemo; 
    buttonLoad: TBitBtn; 
    buttonExtract: TBitBtn; 
    openDialog: TOpenDialog; 
    procedure buttonExtractClick(Sender: TObject); 
    procedure buttonLoadClick(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 

var 
  formMain: TformMain; 

implementation 

{$R *.dfm} 

procedure TformMain.buttonExtractClick(Sender: TObject); 
var 
  currentSymbolI: Integer;  // Индекс текущего символа 
  currentSymbol: String;    // текущий символ 
  currentState: String;     // текущее состояние автомата 
  bufferEmail: String;      // Буфер для аккумулирования символов адреса email 

  symbolsAlpha, symbolsDigit, symbolsSpecial: String;  // вспомогательные 
  domainWasRead: Bool;  // был ли распознан домен в адресе email 
begin 
  symbolsAlpha := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
  symbolsDigit := '0123456789'; 
  symbolsSpecial := '.-'; 
  currentState := 'S'; 
  domainWasRead := false; 
  bufferEmail := ''; 

  memoEmails.Clear; 

  for currentSymbolI := 0 to Length(memoText.Lines.Text) do 
    begin 
      currentSymbol := memoText.Lines.Text[currentSymbolI]; 

      if currentState = 'S' then 
        begin 
          if( AnsiPos( currentSymbol, symbolsAlpha ) <> 0 ) then 
            begin 
              currentState := 'E1'; 
              bufferEmail := bufferEmail + currentSymbol; 
            end 
//        else 
//          begin 
//          end 
        end 
      else 
        if currentState = 'E1' then 
          begin 
            if( AnsiPos( currentSymbol, symbolsAlpha ) <> 0 ) or 
              ( AnsiPos( currentSymbol, symbolsDigit ) <> 0 ) then 
              begin 
                bufferEmail := bufferEmail + currentSymbol; 
              end 
            else 
              if( currentSymbol = '@' ) then 
                begin 
                  currentState := 'E2'; 
                  bufferEmail := bufferEmail + currentSymbol; 
                  domainWasRead := false; 
                end 
              else 
                begin 
                  currentState := 'S'; 
                  bufferEmail := ''; 
                end 
          end 
        else 
          //if currentState = 'E2' then 
            begin 
              if( AnsiPos( currentSymbol, symbolsAlpha ) <> 0 ) or 
                ( AnsiPos( currentSymbol, symbolsDigit ) <> 0 ) or 
                ( AnsiPos( currentSymbol, symbolsSpecial ) <> 0 ) then 
                begin 
                  bufferEmail := bufferEmail + currentSymbol; 
                  domainWasRead := true; 
                end 
              else 
                begin 
                  if domainWasRead then 
                    begin 
                      currentState := 'S'; 
                      memoEmails.Lines.Add( bufferEmail ); 
                      bufferEmail := ''; 
                    end 
                  else 
                    begin 
                      currentState := 'S'; 
                      bufferEmail := ''; 
                    end 
                end 
            end 
    end; 

    if( bufferEmail <> '' ) then 
      memoEmails.Lines.Add( bufferEmail ); 

    if( memoEmails.Lines.Text = '' ) then 
      memoEmails.Lines.Add( 'Адресов E-Mail в тексте обнаружено не было ); 
end; 

procedure TformMain.buttonLoadClick(Sender: TObject); 
begin 
  if( openDialog.Execute() ) then 
    begin 
      memoText.Lines.LoadFromFile( openDialog.FileName ); 
    end; 
end; 

end.
СПАСИБО!
Ozzzy вне форума Ответить с цитированием
Старый 31.05.2010, 13:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не многовато ли?
Этак нужно около 20 мин потерять...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.05.2010, 13:13   #3
Ozzzy
Новичок
Джуниор
 
Регистрация: 31.05.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не многовато ли?
Этак нужно около 20 мин потерять...
Ну пожалуйста! просто скоро защита курсача а я не бум бум в этом...выручи плиз!
Ozzzy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните, что значит каждая строка в программе *natali* Помощь студентам 5 07.11.2009 15:17
Что делает эта строчка??? marselik Общие вопросы C/C++ 2 02.11.2009 13:54
Что за строчка на Си??? mTl Помощь студентам 9 25.12.2008 20:33
Напишите пожалуйста за что отвечает каждая строчка Saaashka Помощь студентам 1 02.07.2008 08:34