Главная страница
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.52 MB
Время: 0.023 c
2-1208605373
lewka-serdceed
2008-04-19 15:42
2008.05.18
Защита от копирования


15-1206998230
Германн
2008-04-01 01:17
2008.05.18
Кстати. Поздравляю всех, кто читает мой пост!


3-1197297073
Fregl
2007-12-10 17:31
2008.05.18
Ошибка добавления lookup поля в TADOTable


2-1208335672
Armond
2008-04-16 12:47
2008.05.18
Запрос


2-1208844141
dumka
2008-04-22 10:02
2008.05.18
запросы