Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.058 c
15-1352709195
Аббат Пиккола
2012-11-12 12:33
2013.03.22
За демократию


4-1245173597
Макс РВС
2009-06-16 21:33
2013.03.22
Отключение хард диска по букве


15-1339653614
KSergey
2012-06-14 10:00
2013.03.22
Ассемблерные вставки и переносимость кода


15-1351654923
Kindle
2012-10-31 07:42
2013.03.22
"Бинарный файл. Продолжить?"


15-1350246602
Юрий
2012-10-15 00:30
2013.03.22
С днем рождения ! 15 октября 2012 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский