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

Вниз

Как сохранить файл в нужной кодировке   Найти похожие ветки 

 
eklmn   (2004-07-22 09:24) [0]

Проблема, кажется, простая.
Есть список list: TStrings,
который сохраняется в файл: list.savetofile("asf.txt").
По умолчанию кодировка файла win-1251. Как можно сохранить в досовской кодировке?

Заранее благодарен за помощь.


 
Reindeer Moss Eater ©   (2004-07-22 09:26) [1]

CharToOem


 
eklmn   (2004-07-22 09:33) [2]


> CharToOem

Я уже пытался, пишу:
var s1,s2:PChar;
...
s1:="asdf";
CharToOEM(s1,s2);
Почему-то пишет Access Violation. Что я неправильно делаю?


 
Думкин ©   (2004-07-22 09:40) [3]

> var s1,s2:PChar;
> ...
> s1:="asdf";
> CharToOEM(s1,s2);

А память? И чем string не угодил?


 
eklmn   (2004-07-22 09:43) [4]


> А память? И чем string не угодил?


Можно в этом месте поподробнее?


 
Думкин ©   (2004-07-22 09:45) [5]

В каком? там 2 места.


 
eklmn   (2004-07-22 09:50) [6]


> В каком? там 2 места.


Меня насчет памяти интересует.


 
KSergey ©   (2004-07-22 09:51) [7]

FTextBuf: String;

CharToOemBuff (PChar(FTextBuf), PChar(FTextBuf), Length(FTextBuf));

Или как вариант - сохранять через поток (TStrings.SaveToStream), могу дать простейшую надстройку над TFileStream, которая умеет сохранять с конвертированием (впрочем, все просто, понятно).

> list: TStrings,

Вот так вот и определен?? И такого класса объект создается? Так нельзя. Надо использовать TStringList


 
Reindeer Moss Eater ©   (2004-07-22 09:52) [8]

> list: TStrings,

Вот так вот и определен?? И такого класса объект создается? Так нельзя


Так нельзя советовать. А определять переменные - можно.


 
Думкин ©   (2004-07-22 09:56) [9]

лучше юзай
var s1,s2:String;


 
KSergey ©   (2004-07-22 09:57) [10]

> [8] Reindeer Moss Eater ©   (22.07.04 09:52)
> > list: TStrings,
>
> Вот так вот и определен?? И такого класса объект создается?
> Так нельзя
>
> Так нельзя советовать. А определять переменные - можно.

Хорошо, согласен.

Тогда переформулирую в уточняющий вопрос: а какого класса объект создается?


 
Reindeer Moss Eater ©   (2004-07-22 09:58) [11]

KSergey
У него трабл все равно не с этим связан.
А с неинициализированной PChar


 
Alx2 ©   (2004-07-22 09:58) [12]

>Я уже пытался, пишу:
>var s1,s2:PChar;
>..
>s1:="asdf";
>CharToOEM(s1,s2);
>Почему-то пишет Access Violation. Что я неправильно делаю?

Var S : String;
Begin
S := "fsdkjhgslkd";
CharToOem(PChar(S),PChar(S));
End;


 
Reindeer Moss Eater ©   (2004-07-22 10:00) [13]

s1:="asdf";
Setlength(s2,Length(s1));
CharToOEM(PChar(s1),PChar(s2));


 
eklmn   (2004-07-22 10:00) [14]


> FTextBuf: String;
>
> CharToOemBuff (PChar(FTextBuf), PChar(FTextBuf), Length(FTextBuf));

Ну вот, наконец-то конкретный ответ на конкретный вопрос. Спасибо.


> Вот так вот и определен?? И такого класса объект создается?
> Так нельзя. Надо использовать TStringList

По-моему, без разницы. Я пишу list:=TStringList.create. Это и в хелпе есть. Я всегда так делал - без проблем, сейчас просто кодировку нужно поменять.


 
KSergey ©   (2004-07-22 10:02) [15]

Остальные ответы были не менее конкретные
Просто они предполагали самостоятельную работу, всегда идущую на пользу ;)


 
Думкин ©   (2004-07-22 10:02) [16]

> [14] eklmn   (22.07.04 10:00)
> Ну вот, наконец-то конкретный ответ на конкретный вопрос.

А мне казалось, что ответ дан в [1]. Только с PChar работать уметь надо, а это уже другой вопрос.


 
eklmn   (2004-07-22 10:04) [17]


> А с неинициализированной PChar


Еще ламерский вопрос, на будущее: под пчар обязательно выделять память?


 
Думкин ©   (2004-07-22 10:07) [18]

> [17] eklmn   (22.07.04 10:04)

если с ним голяком работать - то да. Это указатель и все.
но всегда можно так PChar(String).
Просто со String(хоть тоже указатель) работа Дельфи устроена сложнее.


 
KSergey ©   (2004-07-22 10:07) [19]

Под PChar - нет
При определении переменной под ее хранение и так выделится память (в текущих реализациях - 4 байта)
Осталось только разобраться что же это такое на самом деле - PChar


 
Anatoly Podgoretsky ©   (2004-07-22 10:09) [20]

Не обязатель, достаточно объявить статически, что и сделано, память надо выделять под данные на которые показывает PCharVar


 
Думкин ©   (2004-07-22 10:10) [21]

> 19] KSergey ©   (22.07.04 10:07)
> [20] Anatoly Podgoretsky ©   (22.07.04 10:09)

Ну да, это и имел в виду. :(


 
Думкин ©   (2004-07-22 10:12) [22]

> Просто со String(хоть тоже указатель) работа Дельфи устроена сложнее

Опять же. Речь идет о длинных строках.


 
vic   (2004-07-22 10:14) [23]

а можно вопрос по сабжу:
нужно перевести файлы(*.txt) из кодировки Dos в Windows.
Как?


 
Reindeer Moss Eater ©   (2004-07-22 10:16) [24]

На вопрос по сабжу уже ответили


 
eklmn   (2004-07-22 10:20) [25]


> нужно перевести файлы(*.txt) из кодировки Dos в Windows.


Насколько понимаю, так же, только использовать OEMToChar


 
Anatoly Podgoretsky ©   (2004-07-22 10:49) [26]

Да



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

Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.038 c
3-1089798219
Anics
2004-07-14 13:43
2004.08.08
DBGrid как в 1С Предприятие 7.7


14-1090243869
Baron
2004-07-19 17:31
2004.08.08
Интересный САБЖ


14-1090392311
Slider007
2004-07-21 10:45
2004.08.08
Kaspersky Antivirus 5.0.142 обновление баз


1-1090577738
кларк
2004-07-23 14:15
2004.08.08
Как сделать, чтобы ListBox заполнился при откр диал окна?


4-1087531479
Denizzz
2004-06-18 08:04
2004.08.08
Поверх DOS-окна





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