![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Юникод в Delphi [D7, XP]
Джек874585 © (2008-04-23 09:53:00)Добрый день!
2 месяца писал программу которая импортирует "Текстовые файлы" в StringList, затем бегает по всем строкам и сажает данные в разные таблицы MS SQL сервера. Программа прошла все мои тесты на отлично, и вот такой облом. При разработке мной небыло учтено, что файлы будут поступать в кодировке "Юникод". Теперь мой StringList вообще говорит что Count - ы файлов равны нулю. У меня вопрос, что в моем случаи можно сделать? Заранее благодарю.
Anatoly Podgoretsky (2008-04-23 11:25:00) [1]> ANB (23.04.2008 11:08:19) [19]
Я тоже решил игнорировать.
А сначало хорошо начиналось.
Anatoly Podgoretsky (2008-04-23 11:25:00) [2]> ANB (23.04.2008 11:07:18) [18]
И не только по слухам, гораздо интереснее а работает ли с ANSI
ANB (2008-04-23 11:08:00) [3]
> А спасибо:
>
>
> > Джек874585 (23.04.08 09:53)
> > случаи можно сделать? Заранее благодарю.
Нагел товарищь. Не буду больше код постить.
ANB (2008-04-23 11:07:00) [4]
> Данные теряются.
Если не тока русские и английские буквы в тексте, то при преобразовании в АНСИ по любому потеряются. Тогда тока переписывать программу. Впрочем, мона подождать ИШ - он занимался делфи дотнет. По слухам она работает с юникодом
sniknik (2008-04-23 10:52:00) [5]> Может какой ни будь компонент посоветуете или еще что ни будь.
уже посоветовали, и компонент (набор) и код для частного конвертирования в ANSI (пойдет если в юникоде только русский и/или английский, иероглифы и любое другое "не катит")
чего еще тебе старче? © Золотая рыбка
> а заказчику про то, что я ступил не хотелось бы рассказывать.
придется. т.к. если нужна полноценная работа с юникодом то программу придется переписывать (а она нужна судя по упомянутым иероглифам)
Джек874585 (2008-04-23 10:47:00) [6]
ANB (23.04.08 10:43) [14]
Ваша процедура не спасение ... Данные теряются. А спасибо:
> Джек874585 (23.04.08 09:53)
> случаи можно сделать? Заранее благодарю.
Плохиш (2008-04-23 10:46:00) [7]
> D7 без сторонних компонент юникод не поддерживает.
Скажем так, поставляемые с делфи визуальные компоненты юникода на поддерживают.
> Джек874585 (23.04.08 10:37) [12]
>
> > Тяжело, но и это можно, только распозновать ничего не
> надо,
> > все равно не сможешь преобразовать иероглифы в ANSI
>
>
> Расскажите пожалуйста как. Может какой ни будь компонент
> посоветуете или еще что ни будь.
[4] + в программе использовать только WideString.
ANB (2008-04-23 10:43:00) [8]
> Расскажите пожалуйста как. Может какой ни будь компонент
> посоветуете или еще что ни будь.
Чукча не читатель.
Спасибо где ?
Джек874585 (2008-04-23 10:39:00) [9]
> вот для этого главного, импорт средствами MS SQL предпочтителен,
> и распознавать иероглифы не нужно, нужно так как есть записать
> в юникодные же поля (без этого ты ограничишся только 2мя
> языками). а для всего остального "множества других операций"
> одним TWideStringList не обойдешься. D7 без сторонних компонент
> юникод не поддерживает.
Т.е программа уже написана, нужно ее уже сдавать, а заказчику про то, что я ступил не хотелось бы рассказывать.
Джек874585 (2008-04-23 10:37:00) [10]
> Тяжело, но и это можно, только распозновать ничего не надо,
> все равно не сможешь преобразовать иероглифы в ANSI
Расскажите пожалуйста как. Может какой ни будь компонент посоветуете или еще что ни будь.
Anatoly Podgoretsky (2008-04-23 10:33:00) [11]> Джек874585 (23.04.2008 10:18:07) [7]
Тяжело, но и это можно, только распозновать ничего не надо, все равно не сможешь преобразовать иероглифы в ANSI
Anatoly Podgoretsky (2008-04-23 10:32:00) [12]> Джек874585 (23.04.2008 09:53:00) [0]
Данных просто недостаточно, но в общем случае ничего не надо, все само собой конфертируется и возможно два/три раза.
А вот задуматься над тем, что бы работать только с Юникодом стоит.
Слов что бы обложить Борланд просто уже не хватает.
sniknik (2008-04-23 10:28:00) [13]> По этому, сейчас главное распознать иероглифы и посадить на сервер.
вот для этого главного, импорт средствами MS SQL предпочтителен, и распознавать иероглифы не нужно, нужно так как есть записать в юникодные же поля (без этого ты ограничишся только 2мя языками). а для всего остального "множества других операций" одним TWideStringList не обойдешься. D7 без сторонних компонент юникод не поддерживает.
ANB (2008-04-23 10:26:00) [14]procedure TForm1.Button1Click(Sender: TObject);
var
FS : TFileStream;
Size : Integer;
S : String;
begin
// Так грузим обычный текстовый файл
// Memo1.Lines.LoadFromFile('F1.txt');
// А так - юникодовый (если не сильно здоровый)
Memo1.Lines.Text := '';
FS := nil;
try
FS := TFileStream.Create('F1.txt', fmShareDenyNone);
Size := FS.Size;
if Size > 0 then begin
SetLength(S, Size);
FS.ReadBuffer(S[1], Size);
S := WideCharToString(PWideChar(PChar(S)));
Memo1.Lines.Text := S;
end;
finally
FreeAndNil(FS);
end;
// Первый символ получается мусорным, но это уже сам доделаешь
end;
Джек874585 (2008-04-23 10:18:00) [15]2 sniknik
Я не стал описывать полный функционал программы, программа не просто импортирует а выполняет множество других операций которые управляются пользователем. По этому, сейчас главное распознать иероглифы и посадить на сервер.
sniknik (2008-04-23 10:16:00) [16]> что в моем случаи можно сделать?
изначально надо было делать импорт средствами MS SQL, тогда бы и 2 месяца не понадобилось и с юникодом проблем не было бы.
Джек874585 (2008-04-23 10:12:00) [17]TWideStringList - кажется самое оно.
Еще вопрос, если файлы содержат иероглифы или еще какие ни будь символы кроме кириллицы и латиницы, можно ли будет их посадить в таблицы MS SQL и что для этого использовать ?
Cj (2008-04-23 10:09:00) [18]TNTComponents
Riply (2008-04-23 10:01:00) [19]>что в моем случаи можно сделать?
TWideStringList ?
Джек874585 (2008-04-23 09:58:00) [20]> Файлы сильно здоровые будут ?
Нет, максимум 10-30 кб.