![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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='+('Вася');
Такое даже и не скомпилится.