Главная страница
    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.076 c
2-1347121511
alexdn
2012-09-08 20:25
2013.03.22
Верт скролл бар для формы


2-1332909299
Pcrepair
2012-03-28 08:34
2013.03.22
Способ управления сложным проектом


2-1331922008
PJiur
2012-03-16 22:20
2013.03.22
Что это - Constant expression expected?


2-1335777792
Vladolin7
2012-04-30 13:23
2013.03.22
Как ввести данные в поле Memo?


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