глупый вопрос

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

глупый вопрос

Сообщение DYUMON » 11.03.2009 13:37:25

Доброго времени суток . вопрос такой я тока щас поставил сам среду и попытался создать простое приложение блокнот
среда 0.9.26

код такой
Код: Выделить всё
procedure TForm1.MenuItem4Click(Sender: TObject);
begin
if opendialog1.Execute then
begin
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;


но он отказывается работать.
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: глупый вопрос

Сообщение Mr.Smart » 11.03.2009 14:37:45

И в чём заключается "но он отказывается работать"?
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: глупый вопрос

Сообщение Olkha » 11.03.2009 15:12:43

Наверное, проблемы с кодировкой.
У меня были, смотри мой вопрос "TStringList: как вытащить конкретную строку"
Olkha
незнакомец
 
Сообщения: 7
Зарегистрирован: 09.03.2009 11:20:18

Re: глупый вопрос

Сообщение Mr.Smart » 11.03.2009 15:57:42

Для фукции LoadFromFile() имя файла должно быть в кодировке ANSI, а свойство FileName возвращает в кодировке UTF-8.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: глупый вопрос

Сообщение DYUMON » 11.03.2009 16:15:38

в том и дело что даже
Код: Выделить всё
memo1.Lines.LoadFromFile('C:\10-1.txt');

не хотит нифига грузить. я тут форум посмотрел народ жалуется на русскую кодировку :(
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: глупый вопрос

Сообщение Mr.Smart » 11.03.2009 16:29:19

Почему жалуется? Очень даже и доволен :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: глупый вопрос

Сообщение serg_iv » 11.03.2009 18:52:17

Решил проверить - все нормально грузится без всяких извращений с кодировками.
Мандривава 2008.1 gtk2, 0.9.27.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: глупый вопрос

Сообщение Mr.Smart » 11.03.2009 21:41:34

serg_iv писал(а):Решил проверить - все нормально грузится без всяких извращений с кодировками.
Мандривава 2008.1 gtk2, 0.9.27.

Конечно же работает :wink: Почему неработать если у Вас в системе локаль UTF-8 :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: глупый вопрос

Сообщение Ichthyander » 11.03.2009 23:00:58

Почему то после перевода Lazarus на utf8, некоторые компоненты остались на Ansi, поэтому приходится проверять каждый раз, что требуется: Ansi-строка или UTF8 для имени файла.
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: глупый вопрос

Сообщение DYUMON » 12.03.2009 07:11:30

Я пробовал на рабочем компе. Пришел домой поставил написал без проблемм блокнот. принес на работу запустил уже готовый exe он выдал ошибку типо файл "" не существует и умер
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: глупый вопрос

Сообщение Ichthyander » 12.03.2009 10:33:37

DYUMON
Возможно на рабочем компе в пути к файлу не было символов кириллицы и ошибка не проявилась , так как что UTF8 - что ANSI одно и тоже, если используются только первые 127 байтов в таблице символов. А на рабочем в пути к файлу символы кириллицы использовались, вот ошибка и проявилась. Используйте UTF8ToSys и SysToUTF8
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: глупый вопрос

Сообщение DYUMON » 12.03.2009 12:28:39

Так на рабочем компе даже
просто путь
'C:\txtx.txt' не хочет грузится
дома UTF8ToSys работает а на работе нифига.

Добавлено спустя 20 минут 43 секунды:
пересобрал среду щас файлы грузятся но теперь внутри кракозябры вместо русских букв. %)
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: глупый вопрос

Сообщение DYUMON » 01.10.2013 13:15:26

ДА простят меня за некрофилию. Прошли годы, опять повторил свой пример. в memo загрузились кракозябры.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: глупый вопрос

Сообщение VirtUX » 01.10.2013 13:37:38

Если Лазарь из последних: TMemo отображает в UTF-8. Возможно ваш файл содержит внутри символы в другой кодировке (OEM866 или CP1251)...
Если не уверены точно в какой кодировке, то тут на форуме обсуждалось "как определить кодировку".
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: глупый вопрос

Сообщение Лекс Айрин » 01.10.2013 13:44:41

DYUMON, это проблемы с кодировкой. Лечится подбором функции перекодировки.

Это если исключать проблем с самой средой.

А вообще, у меня работоспособен такой кусок:

Код: Выделить всё
procedure TForm1.MenuItem8Click(Sender: TObject);
var
  Str:TStringList;
begin
  Str:=TStringList.Create;
  if OpenDialog1.Execute then
       Begin
            MyFile:=OpenDialog1.FileName;
            Form1.Caption:=MyFile+'             LexEditor';
            // ожидается выбор кодировки текста
           Case OpenDialog1.FilterIndex of
             1:begin
                 {$IFDEF MSWINDOWS}
                 Str.LoadFromFile(UTF8ToSys(MyFile));
                 {$ENDIF}
                 {$IFDEF LINUX} Str.LoadFromFile(MyFile);   {$ENDIF}
                 Form1.MainEditor.Lines:=Str;
               end;
              2:Begin
                {$IFDEF MSWINDOWS}
                 Str.LoadFromFile(UTF8ToSys(MyFile));
                 {$ENDIF}
                 {$IFDEF LINUX} Str.LoadFromFile(MyFile);   {$ENDIF}
                 Form1.MainEditor.Lines.Text:=CP1251ToUTF8(Str.Text);  <<<----- процедура перекодировки подобрана ручками
              end;
              else begin end;
             end;
       end
  else Begin end;
  Str.Free;
end;                 


Ну и на закуску -- никто не мешает тебе сделать так:
Код: Выделить всё
procedure TForm1.Button12Click(Sender: TObject); // winToUTF8 -- повторное открытие в другой кодировке.
var
    Str:TStringList;
begin
     if MyFile = '' then 
        begin
             ShowMessage ('Файл не был открыт.');
        end
     else
         begin
             Str:=TStringList.Create;
             Str.LoadFromFile(UTF8ToSys(MyFile));
             Form1.MainEditor.Clear;
             Form1.MainEditor.Lines.Text:= Str.Text;
             Str.Free;
         end;
end;           
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 235

Рейтинг@Mail.ru