Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.25;
Скачать: CL | DM;

Вниз

Старый добрый 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.03 c
15-1170209414
RustamK
2007-01-31 05:10
2007.02.25
Найти наименьшую цепочку...


3-1164975601
Виктор1985
2006-12-01 15:20
2007.02.25
Добавись запись в талицу Acess


15-1170588148
SkySpeed
2007-02-04 14:22
2007.02.25
Можно ли исп-вать флэшку в качестве доп. опер. памяти в WinXP?


2-1170545848
ssss
2007-02-04 02:37
2007.02.25
программу во все окно!


2-1170677592
Drone
2007-02-05 15:13
2007.02.25
Вопрос касается удаления записи из типизированного файла.