Главная страница
    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.042 c
14-1090547716
Думкин
2004-07-23 05:55
2004.08.08
С днем рождения! 23 июля


3-1089617066
Prohodil Mimo
2004-07-12 11:24
2004.08.08
При загрузке системы почему-то стал отключаться сервер ИБ.


1-1090997977
RagE
2004-07-28 10:59
2004.08.08
TCanvas.TextOut


1-1090925023
faost
2004-07-27 14:43
2004.08.08
Фильтрация по дате


6-1086609132
Николай
2004-06-07 15:52
2004.08.08
Как написать прогу для получения писем с сервера?





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