Лекс Айрин писал(а):не... есть только Case внутри if
- Код: Выделить всё
-         procedure TMainForm.MenuOpenClick(Sender: TObject);
 var
 Str: TStringList;
 begin
 Str := TStringList.Create;
 if OpenDialog1.Execute then
 begin
 MyFile := OpenDialog1.FileName;
 Caption := MyFile + ':LexEditor';
 // ожидается выбор кодировки текста
 case OpenDialog1.FilterIndex of
 1:
 begin
 {$IFDEF MSWINDOWS}
 Str.LoadFromFile(UTF8ToSys(MyFile));
 {$ENDIF}
 {$IFDEF LINUX}
 Str.LoadFromFile(MyFile);
 {$ENDIF}
 MainEditor.Lines := Str;
 end;
 2:
 begin
 {$IFDEF MSWINDOWS}
 Str.LoadFromFile(UTF8ToSys(MyFile));
 {$ENDIF}
 {$IFDEF LINUX}
 Str.LoadFromFile(MyFile);
 {$ENDIF}
 MainEditor.Lines.Text := CP1251ToUTF8(Str.Text);
 end;
 3:begin // *.* UTF8
 {$IFDEF MSWINDOWS}
 Str.LoadFromFile(UTF8ToSys(MyFile));
 {$ENDIF}
 {$IFDEF LINUX}
 Str.LoadFromFile(MyFile);
 {$ENDIF}
 MainEditor.Lines := Str;
 end;
 4:begin  // *.* Win1251
 {$IFDEF MSWINDOWS}
 Str.LoadFromFile(UTF8ToSys(MyFile));
 {$ENDIF}
 {$IFDEF LINUX}
 Str.LoadFromFile(MyFile);
 {$ENDIF}
 MainEditor.Lines.Text := CP1251ToUTF8(Str.Text);
 end;
 else
 begin
 end;
 end;
 end
 else
 begin
 end;
 Str.Free;
 MainForm.ShellTreeView1.Path:=MainForm.OpenDialog1.InitialDir;
 end;
 
ЗЫ: постараюсь убрать этот код
 
Осподе, кошмар какой.  
 
 Еще тут кто-то мне пишет, что я есмь центральный индусский говнокодер сайта.
Итак:
1. Не проверяется, как закрыто окно выбора файлов. В случае отказа через cancel myFileName:= и так далее
2. Зачем в case пустой блок и ветка else? Тоже из тех же соображений, что "неполный if не работает" (С)
3. по поводу этого:
- Код: Выделить всё
- {$IFDEF MSWINDOWS}
 Str.LoadFromFile(UTF8ToSys(MyFile));
 {$ENDIF}
 {$IFDEF LINUX}
 Str.LoadFromFile(MyFile);
 {$ENDIF}
 
ну, скажем в применяемой версии FPC порушено Utf8ToSys и эти директивы условной компиляции действительно надо (предположим). Но, ёпта, повторять это 100500 раз зачем? Сделать свою отдельную процедуру, в которую запихать чтение, не судьба? Не говоря уж о том, что результат чтения - опять не проверяется.
----------
1. и вот сказал Создатель - возврат результата из функции должен осуществляться путем присвоения результирующего значения идентификатору функции. И было сделано. И показалось - это хорошо.
2. науськиваемый врагом Рода человеческого Программер научился копировать куски своего и чужога кода, получил кучу ошибок копиляции и взмолился - спаси, Отче, ибо! И возникла псевдопеременная Result. И стало такъ.
3. и прошли времена Паскалей, и Программер взмолился: пашто, Отче, во всех языкахъ программирований ихъ программеры для выхода изнутрей функции пишут один! оператор return xxx, а я, труъ программер Паскаля должен оформить блок begin-end, присвоить значение православной переменной Result, и вызвать функцию Exit, что аж четыре строки! Дай, о Отче! И возникла форма Exit(returnCode). И стало такъ.