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

Вниз

Юникод в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
15-1207229970
oleg_teacher
2008-04-03 17:39
2008.05.18
как узнать место располажени папки докуметы ALL Users/ (програмно


2-1208350865
papa_roarch
2008-04-16 17:01
2008.05.18
Правый или левый клик?


3-1196084789
AntonUSAnoV
2007-11-26 16:46
2008.05.18
пропадает полоса прокрутки в dbgrid


11-1187366554
Vladimir Kladov
2007-08-17 20:02
2008.05.18
Версия 2.78


15-1207070549
Andy BitOff
2008-04-01 21:22
2008.05.18
Интерактивный отладчик для PHP





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