Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Delphi 2011 и русский текст   Найти похожие ветки 

 
Hgd1   (2012-02-13 22:43) [0]

Подскажите, использую 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");

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


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


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

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


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

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


 
Ega23 ©   (2012-02-13 22:59) [3]


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


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


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


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

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


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


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

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


 
DVM ©   (2012-02-13 23:23) [5]


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

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


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

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

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


 
DVM ©   (2012-02-13 23:44) [7]


> Hgd1   (13.02.12 23:40) [6]

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


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

Это BOM


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

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


 
brother ©   (2012-02-14 09:45) [9]

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

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


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

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


 
Ega23 ©   (2012-02-14 10:43) [11]


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


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


 
brother ©   (2012-02-14 10:53) [12]

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


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

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


 
brother ©   (2012-02-14 11:02) [14]

понял


 
Ega23 ©   (2012-02-14 11:13) [15]


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


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



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.048 c
2-1342507580
Pcrepair
2012-07-17 10:46
2013.03.22
Массив строк. как ввести в него данные?


15-1337670031
Pcrepair
2012-05-22 11:00
2013.03.22
Правильное использование DLL


15-1353572399
Иван Уткин
2012-11-22 12:19
2013.03.22
Вопрос по теории вероятностей?


15-1347821674
Dmitry375
2012-09-16 22:54
2013.03.22
Running Delphi on Mac OS X


2-1328430400
FIL-23
2012-02-05 12:26
2013.03.22
переменная типа memo