Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
ВнизСтарый добрый DOS... Найти похожие ветки
← →
C@N © (2007-02-07 17:30) [0]Господа! не подскажете как можно быстро строку в кодировке ДОС переконвертировать в кодировку ВЫНЬдоус???
Должна же быть какая-то стандартная функция.... или-же таковой нет???
← →
Desdechado © (2007-02-07 17:39) [1]OemToChar
← →
C@N © (2007-02-07 18:40) [2]не разберуся(((
у меня есть строка string type, считаная из файла... кодировка доса... мне ее теперь надо по человечьи показать))))
к тому-же я не силен в char<=> string взаимоотношениях...
Помогите тупому пожалуйста )))
← →
Dmitrij_K (2007-02-07 18:44) [3]http://www.google.ru/search?hl=ru&q=OemToChar+delphi
← →
C@N © (2007-02-07 20:29) [4]хе... не помог гугль((((
но... сбацал прогуfunction OemToCharStr(const OemStr: string): string;
begin
SetLength(Result, Length(OemStr));
if Length(Result) > 0 then
OemToCharBuff(PChar(OemStr), PChar(Result), Length(Result));
end;
function CharToOEMStr(const OemStr: string): string;
begin
SetLength(Result, Length(OemStr));
if Length(Result) > 0 then
CharToOEMBuff(PChar(OemStr), PChar(Result), Length(Result));
end;
function OemToANSIStr(const OemStr: string): string;
begin
SetLength(Result, Length(OemStr));
if Length(Result) > 0 then
OemToANSIBuff(PChar(OemStr), PChar(Result), Length(Result));
end;
function ANSIToOEMStr(const OemStr: string): string;
begin
SetLength(Result, Length(OemStr));
if Length(Result) > 0 then
ANSIToOEMBuff(PChar(OemStr), PChar(Result), Length(Result));
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Memo2.OEMConvert:=Checkbox1.Checked;
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Memo2.Clear;
memo2.lines.add(OEMtoCharStr(memo1.Lines.Strings[1]));
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Memo2.Clear;
memo2.lines.add(chartooemStr(memo1.Lines.Strings[1]));
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Memo2.Clear;
memo2.lines.add(oemtoANSIStr(memo1.Lines.Strings[1]));
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Memo2.Clear;
memo2.lines.add(AnsitooemStr(memo1.Lines.Strings[1]));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo2.Font.Charset:=OEM_CHARSET ;
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
Memo2.Lines.Clear;
Memo2.Font.Charset:=DEFAULT_CHARSET;
CheckBox1.Checked:=false;
CheckBox1.OnClick(sender);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo2.Font.Charset:=RUSSIAN_CHARSET;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Memo2.Font.Charset:=ANSI_CHARSET;
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
Memo2.Font.Charset:=1;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Memo1.Lines.Clear;
Opendialog1.Execute;
Memo1.Lines.LoadFromFile(Opendialog1.FileName);
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
Memo2.Clear;
memo2.lines.add((memo1.Lines.Strings[1]));
end;
в фаре набрал воттакой текстфайл.... английский руский(вин) русский(ДОС)Original TEXT
qwerty щЎєъхэ йцукен
и всеравно не колбасит...из доса в виндовс(((((
ОбЪясните пожалуйста мне такому тупому в чем фича???
← →
Джо © (2007-02-07 20:46) [5]> ОбЪясните пожалуйста мне такому тупому в чем фича???
В чем фича, не берусь судить.
Чарсеты менять не нужно.
А еще очень интересен подход вот тут:SetLength(Result, Length(OemStr));
if Length(Result) > 0 then
Т.е., интересен ход мысли, из-за которого сначала устанавливается длина строки, а уж потом проверяется равенство этой строки 0. :)
← →
C@N © (2007-02-07 20:54) [6]2Джо хм... не суть.... это пробник...))))
короче... обЪясняю проблему в целом...
СУБД плюет файликом в дос-формате примерно такого вида
----------------------------------------------
| Код | Артикул | кол-во | Сумма |
-----------------------------------------------
| 123 | Кукла Вова | 10| 350руб|
-----------------------------------------------
| 456 | Кукла Петя | 25| 420руб|
-----------------------------------------------
ИТД ИТП....
вот таких строчек порядка 40000....
руками - я почернею делать...и не одну мыш с клавой уработаю....
Пишу прогу, которая берет и загоняет в "базу" для последующего анализа код, артикул и количество...
но вот артикул он в базу мою в виде крякозяблаф попадает (((( ч0 делать не знаю ((((
← →
RASkov (2007-02-07 20:57) [7]
procedure DosToWin(var St:String);
procedure WinToDos(var St:String);
const
DosWin: Array[0..255] Of Byte =
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,
152,153,154,129,156,157,158,159,160,161,162,163,164,165,166,167,
168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,
130,132,135,134,128,133,131,155,184,185,186,187,188,189,190,191);
WinDos: Array[0..255] of Byte=
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
244,195,240,246,241,245,243,242,176,177,178,179,180,181,182,183,
184,185,186,187,188,189,190,191,192,193,194,247,196,197,198,199,
200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
216,217,218,219,220,221,222,223,248,249,250,251,252,253,254,255,
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239);
implementation
procedure DosToWin;
var N: Integer;
begin
for N:= 1 to Length(St) do St[N]:=Chr(DosWin[Ord(St[N])]);
end;
procedure WinToDos;
var N: Integer;
begin
for N:= 1 to Length(St) do St[N]:=Chr(WinDos[Ord(St[N])]);
end;
← →
Джо © (2007-02-07 20:58) [8]> (((( ч0 делать не знаю ((((
Учиться, учиться и учиться! (ц) В.И. Ульянов (Ленин).
Ну, ты же уже написал готовые функции, осталось ими воспользоваться.
← →
Amoeba © (2007-02-07 23:00) [9]Готовая ф-ия их RxLib:
function OemToAnsiStr(const OemStr: string): string;
begin
SetLength(Result, Length(OemStr));
if Length(Result) > 0 then
OemToCharBuff(PChar(OemStr), PChar(Result), Length(Result));
end;
← →
c2n (2007-02-07 23:05) [10]2Джо
Ерунду это "OemToCharStr" выдает (((
в фаре по человечески.... хм....
← →
c2n (2007-02-07 23:11) [11]2Amoeba
cм [10]....(((
← →
Amoeba © (2007-02-07 23:19) [12]
> c2n (07.02.07 23:11) [11]
> 2Amoeba
> cм [10]....(((
> <Цитата>
Не надо "ля-ля". У всех работает как надо, только у одного c2n все не как у людей.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c