Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > открытие файлов программой


Автор: Михалыч 21.9.2009, 21:35
Есть текстовый редактор,при открытии редактора файлом, нужно что бы он проверял расширение и если расширение txt ,то открывается в Richedit1,а
если ini , то в Richedit2
Написал вот так ,но открывается сразу в двух

Код:


Код

procedure TForm1.FormCreate(Sender: TObject);
var
ten:string;
begin
ten := ExtractFileExt(ParamStr(1));
  delete(ten, 1, 1);
if ten='txt' then begin RichEdit1.Lines.LoadFromFile(ParamStr(1)); end;
if ten='ini' then begin RichEdit2.Lines.LoadFromFile(ParamStr(1)); end;
end;



Автор: THandle 21.9.2009, 21:44
Михалыч, вообще все должно нормально работать. Посмотри под отладчиком что находится в ten и какие строки выполняются.

Замечания: Нет проверки на количество параметров, зачем то впихнуты лишние begin...end, оформление ужасно.

Автор: Михалыч 21.9.2009, 22:21
Цитата(THandle @  21.9.2009,  21:44 Найти цитируемый пост)
Замечания: Нет проверки на количество параметров, зачем то впихнуты лишние begin...end, оформление ужасно. 

На счет проверки количества параметров можно поподробней.
А лишние  begin...end  вставил от без исходности,все подряд пробовал

Автор: THandle 21.9.2009, 22:31
Михалыч, не идеальный вариант, но попробуй:
Код


procedure TForm2.FormCreate(Sender: TObject);
const
  EXT_TXT = '.txt';
  EXT_INI = '.ini';
var
  s: String;
begin
  if ParamCount > 0 then
  begin
    s := ExtractFileExt(ParamStr(1));
    if CompareStr(s, EXT_TXT) = 0 then
      RichEdit1.Lines.LoadFromFile(ParamStr(1))
    else
      if CompareStr(s, EXT_INI) = 0 then
        RichEdit2.Lines.LoadFromFile(ParamStr(1))
  end;
end;

Автор: former 21.9.2009, 22:39
Цитата(THandle @  21.9.2009,  21:44 Найти цитируемый пост)
зачем то впихнуты лишние begin...end, оформление ужасно. 

Код

procedure TForm1.FormCreate(Sender: TObject);
var
ten:string;
begin
  ten := ExtractFileExt(ParamStr(1));
  delete(ten, 1, 1); //этого можно и не делать
  if ten='.txt' then RichEdit1.Lines.LoadFromFile(ParamStr(1))
  else if ten='.ini' then RichEdit2.Lines.LoadFromFile(ParamStr(1));
end;


Автор: THandle 21.9.2009, 22:44
former,  к сожалению последний пункт, а именно плохое оформление твой код не закрывает smile Да и не понятно зачем делать Delete...

Добавлено @ 22:45
К тому же твой код не сработает. Ты удаляешь точку, а в сравнении пишешь расширение с точкой...

Автор: former 21.9.2009, 22:47
Цитата(THandle @  21.9.2009,  22:44 Найти цитируемый пост)
К тому же твой код не сработает. Ты удаляешь точку, а в сравнении пишешь расширение с точкой... 

тык я и пометил, что этого не нужно делать (я про delete).

Код

procedure TForm1.FormCreate(Sender: TObject);
var
  ten:string;
begin
  ten := ExtractFileExt(ParamStr(1));
  if ten='.txt' then
    RichEdit1.Lines.LoadFromFile(ParamStr(1))
  else if ten='.ini' then
    RichEdit2.Lines.LoadFromFile(ParamStr(1));
end;

 smile 

Автор: THandle 21.9.2009, 23:21
former, я конечно зануда, но код снова недооформлен smile И проверку на количество параметров все же лучше делать.

Автор: former 21.9.2009, 23:46
Цитата(THandle @  21.9.2009,  23:21 Найти цитируемый пост)
former, я конечно зануда, но код снова недооформлен

THandle, буду признателен за критику. smile 
Может ты имеешь виду пробелы перед знаками (= и smile?
Кстати, по хорошему, и в твоем коде (;) пропущена. smile 
Цитата(THandle @  21.9.2009,  23:21 Найти цитируемый пост)
И проверку на количество параметров все же лучше делать. 

Мотивация.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)