Форум: "Начинающим";
Текущий архив: 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