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

Вниз

Юникод в Delphi   Найти похожие ветки 

 
Джек874585   (2008-04-23 09:53) [0]

Добрый день!

2 месяца писал программу которая импортирует "Текстовые файлы" в StringList, затем бегает по всем строкам и сажает данные в разные таблицы MS SQL сервера. Программа прошла все мои тесты на отлично, и вот такой облом. При разработке мной небыло учтено, что файлы будут поступать в кодировке "Юникод". Теперь мой StringList вообще говорит что Count - ы файлов равны нулю. У меня вопрос, что в моем случаи можно сделать? Заранее благодарю.


 
ANB   (2008-04-23 09:55) [1]

Файлы сильно здоровые будут ?


 
Джек874585   (2008-04-23 09:58) [2]

> Файлы сильно здоровые будут ?

Нет, максимум 10-30 кб.


 
Riply ©   (2008-04-23 10:01) [3]

>что в моем случаи можно сделать?

TWideStringList ?


 
Cj ©   (2008-04-23 10:09) [4]

TNTComponents


 
Джек874585   (2008-04-23 10:12) [5]

TWideStringList - кажется самое оно.

Еще вопрос, если файлы содержат иероглифы или еще какие ни будь символы кроме кириллицы и латиницы, можно ли будет их посадить в таблицы MS SQL и что для этого использовать ?


 
sniknik ©   (2008-04-23 10:16) [6]

> что в моем случаи можно сделать?
изначально надо было делать импорт средствами MS SQL, тогда бы и 2 месяца не понадобилось и с юникодом проблем не было бы.


 
Джек874585   (2008-04-23 10:18) [7]

2 sniknik

Я не стал описывать полный функционал программы, программа не просто импортирует а выполняет множество других операций которые управляются пользователем. По этому, сейчас главное распознать иероглифы и посадить на сервер.


 
ANB   (2008-04-23 10:26) [8]

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;


 
sniknik ©   (2008-04-23 10:28) [9]

> По этому, сейчас главное распознать иероглифы и посадить на сервер.
вот для этого главного, импорт средствами MS SQL предпочтителен, и распознавать иероглифы не нужно, нужно так как есть записать в юникодные же поля (без этого ты ограничишся только 2мя языками). а для всего остального "множества других операций" одним TWideStringList не обойдешься. D7  без сторонних компонент юникод не поддерживает.


 
Anatoly Podgoretsky ©   (2008-04-23 10:32) [10]

> Джек874585  (23.04.2008 09:53:00)  [0]

Данных просто недостаточно, но в общем случае ничего не надо, все само собой конфертируется и возможно два/три раза.
А вот задуматься над тем, что бы работать только с Юникодом стоит.
Слов что бы обложить Борланд просто уже не хватает.


 
Anatoly Podgoretsky ©   (2008-04-23 10:33) [11]

> Джек874585  (23.04.2008 10:18:07)  [7]

Тяжело, но и это можно, только распозновать ничего не надо, все равно не сможешь преобразовать иероглифы в ANSI


 
Джек874585   (2008-04-23 10:37) [12]


> Тяжело, но и это можно, только распозновать ничего не надо,
>  все равно не сможешь преобразовать иероглифы в ANSI


Расскажите пожалуйста как. Может какой ни будь компонент посоветуете или еще что ни будь.


 
Джек874585   (2008-04-23 10:39) [13]


> вот для этого главного, импорт средствами MS SQL предпочтителен,
>  и распознавать иероглифы не нужно, нужно так как есть записать
> в юникодные же поля (без этого ты ограничишся только 2мя
> языками). а для всего остального "множества других операций"
> одним TWideStringList не обойдешься. D7  без сторонних компонент
> юникод не поддерживает.


Т.е программа уже написана, нужно ее уже сдавать, а заказчику про то, что я ступил не хотелось бы рассказывать.


 
ANB   (2008-04-23 10:43) [14]


> Расскажите пожалуйста как. Может какой ни будь компонент
> посоветуете или еще что ни будь.

Чукча не читатель.

Спасибо где ?


 
Плохиш ©   (2008-04-23 10:46) [15]


> D7  без сторонних компонент юникод не поддерживает.

Скажем так, поставляемые с делфи визуальные компоненты юникода на поддерживают.
> Джек874585   (23.04.08 10:37) [12]
>
> > Тяжело, но и это можно, только распозновать ничего не
> надо,
> >  все равно не сможешь преобразовать иероглифы в ANSI
>
>
> Расскажите пожалуйста как. Может какой ни будь компонент
> посоветуете или еще что ни будь.

[4] + в программе использовать только WideString.


 
Джек874585   (2008-04-23 10:47) [16]


ANB   (23.04.08 10:43) [14]


Ваша процедура не спасение ... Данные теряются. А спасибо:


> Джек874585   (23.04.08 09:53)
> случаи можно сделать? Заранее благодарю.


 
sniknik ©   (2008-04-23 10:52) [17]

> Может какой ни будь компонент посоветуете или еще что ни будь.
уже посоветовали, и компонент (набор) и код для частного конвертирования в ANSI (пойдет если в юникоде только русский и/или английский, иероглифы и любое другое "не катит")
чего еще тебе старче? © Золотая рыбка

> а заказчику про то, что я ступил не хотелось бы рассказывать.
придется. т.к. если нужна полноценная работа с юникодом то программу придется переписывать (а она нужна судя по упомянутым иероглифам)


 
ANB   (2008-04-23 11:07) [18]


> Данные теряются.

Если не тока русские и английские буквы в тексте, то при преобразовании в АНСИ по любому потеряются. Тогда тока переписывать программу. Впрочем, мона подождать ИШ - он занимался делфи дотнет. По слухам она работает с юникодом


 
ANB   (2008-04-23 11:08) [19]


> А спасибо:
>
>
> > Джек874585   (23.04.08 09:53)
> > случаи можно сделать? Заранее благодарю.

Нагел товарищь. Не буду больше код постить.


 
Anatoly Podgoretsky ©   (2008-04-23 11:25) [20]

> ANB  (23.04.2008 11:07:18)  [18]

И не только по слухам, гораздо интереснее а работает ли с ANSI


 
Anatoly Podgoretsky ©   (2008-04-23 11:25) [21]

> ANB  (23.04.2008 11:08:19)  [19]

Я тоже решил игнорировать.
А сначало хорошо начиналось.



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

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

Наверх




Память: 0.5 MB
Время: 0.048 c
15-1206929508
slider007
2008-03-31 06:11
2008.05.18
С днем рождения ! 31 марта 2008 понедельник


10-1146128478
Гаврила
2006-04-27 13:01
2008.05.18
Неудача при попытке запуска сервера через DCOM


8-1180290990
Wait
2007-05-27 22:36
2008.05.18
Bass + winamp plugins


15-1207627627
TUser
2008-04-08 08:07
2008.05.18
Настоящий дистрибутив ХР влезает на дискету :)


15-1207566773
samalex
2008-04-07 15:12
2008.05.18
Подключен-ли сетевой диск?





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