Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Delphi 2011 и русский текст [XP]


Hgd1 ©   (2012-02-13 22:43:00) 

Подскажите, использую CodeGear™ Delphi® for Microsoft® Windows™ Version 11.

Код:
memo1.Lines.LoadFromFile('C:\Current.txt');
 For I := 0 To Memo1.Lines.Count-1 do
 begin
   if pos('C=',Memo1.Lines[i])<>0 then
   begin
     Memo1.Lines[i]:='C='+('Вася');
     break;
   end;
 end;
 memo1.Lines.SaveToFile('C:\Current.txt');

Русские буквы Вася не сохраняются, вместо них пробел. Что такое?


Ega23   (2012-02-14 11:13:00) [1]


> я скобок не понял...


i := ++++-+-(++----2-----++(23));


brother   (2012-02-14 11:02:00) [2]

понял


app   (2012-02-14 11:00:00) [3]

Можно любые выражение врать в любое количество скобок. Основы Паскаля, можно и без скобок и даже без конкатенации.


brother   (2012-02-14 10:53:00) [4]

я скобок не понял...


Ega23   (2012-02-14 10:43:00) [5]


> по этому синтаксису можно подробнее?


А что с ним не так?


Dimka Maslov   (2012-02-14 10:16:00) [6]

Если в текстовом файле правильно выставлена преамбула - никаких проблем при загрузке быть не должно и дополнительно конвертировать при чтении файла через потомка TStrings не надо. Всё будет сделано автоматически. Если преамбулы нет - значит надо кодировку при чтении указывать в явном виде. При сохранении же желательно кодировку также явно прописывать. При этом кодировку по умолчанию (ANSI) надо использовать тогда и только тогда, когда это требуется (например программа, в которой потом будет использоваться текст не поддерживает utf-8).  В остальных случаях - utf-8.


brother   (2012-02-14 09:45:00) [7]

> Memo1.Lines[i]:= 'C='+('Вася');

по этому синтаксису можно подробнее?


Anatoly Podgoretsky   (2012-02-14 08:38:00) [8]

После Д2010 был DXE, откуда 2011?


DVM   (2012-02-13 23:44:00) [9]


> Hgd1   (13.02.12 23:40) [6]

Memo1.Lines.LoadFromFile('C:\temp\1.txt', TEncoding.UTF8); то же и при Save


> Но в memo первый символ ставится ? (знак вопроса). Он специально
> оставляет его?

Это BOM


Hgd1   (2012-02-13 23:40:00) [10]

Точно,
файл с кодировкой UTF8. Поступаю так, при загрузке:
memo1.Lines.Text:=Utf8ToAnsi(memo1.Lines.Text);

Но в memo первый символ ставится ? (знак вопроса). Он специально оставляет его?


DVM   (2012-02-13 23:23:00) [11]


>  Что можно сделать?

Кодировку при загрузке/сохранении файла указать? Там вроде бы последний параметр TEncoding.


Hgd1   (2012-02-13 23:06:00) [12]

Ega23 ©, спасибо!
Загвоздка в том, что изначально файл Current.txt в "странном формате" или кодировке. При сохранении русские буквы не сохраняются для данного кода. Что можно сделать?


Hgd1   (2012-02-13 22:59:00) [13]

Все нормал, но вопрос не в этом. Что по поводу русских букв?


Ega23   (2012-02-13 22:59:00) [14]


> Такое даже и не скомпилится.


Чё это вдруг? Всё скомпилится.


> Русские буквы Вася не сохраняются, вместо них пробел. Что
> такое?


У меня всё сохранилось.

Исходный файл:


A=11111
B=22222
C=33333


Код:

procedure TForm18.FormCreate(Sender: TObject);
var
 i: Integer;
begin
 Memo1.Lines.LoadFromFile('C:\temp\1.txt');
 for i := 0 to Memo1.Lines.Count - 1 do
   if Pos('C=', Memo1.Lines[i]) <> 0 then
   begin
     Memo1.Lines[i] := 'C=' + ('Вася');
     Break;
   end;
 Memo1.Lines.SaveToFile('C:\temp\1.txt');
end;


Конечный файл:
A=11111
B=22222
C=Вася


1. Ищи ошибку.
2. Посмотри в сторону TIniFile


Германн   (2012-02-13 22:49:00) [15]


> Memo1.Lines[i]:='C='+('Вася');

Такое даже и не скомпилится.


Наверх

Титульная страница Поиск, карта сайта Написать письмо