Главная страница
    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.071 c
6-1257969182
Lamer6666
2009-11-11 22:53
2013.03.22
Как же выдрать нужный кусочем html кода.


1-1295644073
Wadimka
2011-01-22 00:07
2013.03.22
Конвертация даты в миллисекундах в TDateTime


15-1333612123
Хаус
2012-04-05 11:48
2013.03.22
Нарисовать кнопку в XP-стиле


15-1336765355
Rouse_
2012-05-11 23:42
2013.03.22
Схемы защиты ПО


2-1336222680
Глеб
2012-05-05 16:58
2013.03.22
Редактирование надписей в компоненте едит





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский