Текущий архив: 2013.04.07;
Скачать: CL | DM;
Вниз
китайские символы Найти похожие ветки
← →
stas © (2012-10-01 13:06) [40]sniknik © (01.10.12 12:38) [37]
Мы наверное не о том говорим.s := TmemoryStream.Create;
RichEdit1.lines.SaveToStream(s);
s.position:=0;
(fmDM.DSourceSlovar.DataSet.FieldByName("PrimerCl") as TBlobField).LoadFromStream(s);
s.free;
При таком заполнении поля memo, в Access отобразятся не вопросики, а китайские символы.
Если заполнять через asString то всегда будет правильно отображаться.
← →
ankazh © (2012-10-01 13:23) [41]procedure TfmMain.Edit1Change(Sender: TObject);
var h1, h2:string ;
begin
h1:=fmMain.Edit1.Text+"%";
h2:=QuotedStr(h1);
with fmDM.ADOQuerySlovar do
begin
DisableControls;
Close;
SQL.Clear;
if RadioButton1.Checked then SQL.Add("SELECT * from Slovar where Transkript like"+h2) else
if RadioButton2.Checked then SQL.Add("SELECT * from Slovar where RusWord like"+h2)
Open;
EnableControls;
end;
при таком запросе находит ТОЛЬКО первое слово в "поле МЕМО" (RusWord). Правильно ли написан обработчик поиска или может я что-либо упустила? В БД все слова отобрж корректно. Поле Transkript имеет тип Текстовый, и там поиск выполняется по всему полю.
← →
stas © (2012-10-01 13:28) [42]чтобы не первое надо % с двух сторон.
← →
ankazh © (2012-10-01 13:30) [43]% с двух сторон, значит какие-то символы спереди и какие-то сзади от введенного слова
← →
ankazh © (2012-10-01 13:43) [44]
> stas © (01.10.12 13:28) [42]
> чтобы не первое надо % с двух сторон.
>
>
сделала по твоему и сработало, но как быть, если мне нужно чтоб слово начиналось, а не содержало Edit1.Text?
← →
stas © (2012-10-01 14:23) [45]ankazh © (01.10.12 13:43) [44]
не понял? типа надо искать только в начале слова а не в внутри слова?
ну тогда надо уже думать например
h1:=fmMain.Edit1.Text+"%";
h2:=QuotedStr(h1);
h3:=QuotedStr("% "+h1)
"SELECT * from Slovar where Transkript like"+h2 or Transkript Like"+h3
т.е. мы ищем либо впервом слове либо за пробелом.
Ну а там скобки бробелы и т.д. короче надо определить что такое слово, а оптом уже строить логику.
При этом надо не забывать что это все влияет на скорость и возможно для более оптимального поиска построить структуру хранения данных таким образом чтобы избежать снижения производительности.
← →
stas © (2012-10-01 14:31) [46]http://office.microsoft.com/ru-ru/access-help/HP001032253.aspx
и почитайте это
← →
sniknik © (2012-10-01 14:33) [47]stas © (01.10.12 13:06) [40]
> Мы наверное не о том говорим.
без разницы, запишет все ок, в "правильном юникоде", другое дело не текст, а в представлении rtf. но это опять не от ADO зависит.
← →
ankazh © (2012-10-01 14:38) [48]спасибо за ответы, оч конкретно и понятно. Теперь буду знать где рыть. :)
← →
stas © (2012-10-01 14:45) [49]sniknik © (01.10.12 14:33) [47]
Это оффтоп конечно...
Все равно не пойму как так может быть. Не берем rtf, просто текст.
Записываем в поток 2 байта в десятичном представлении это 255 и 255. в дельфи если это загрузить в тип стринг, то будет 2 символа с кодом 255. Потом этот поток грузим в поле memo.
Tсли посмотреть в акцесс, то откуда акцесс узнает что надо показать 2 символа с кодом 255 и 255, а не один 65535 ?
← →
sniknik © (2012-10-01 14:45) [50]stas ©
если уж хочешь "глюка", который пытаешься показать, то должен "обмануть" дельфю, например подкинуть ей через не типизированные указатели тип widestring под видом string. чтобы он реально считал 1 символ за 2.
← →
sniknik © (2012-10-01 14:47) [51]> то откуда акцесс узнает
ему не нужно, он работает только с юникодом... хранить иногда (приводил справку) может в ansi но работает - получает/отдает юникод.
← →
stas © (2012-10-01 15:00) [52]sniknik © (01.10.12 14:45) [50]
правильно с потоком как раз и получается такой глюк)
← →
sniknik © (2012-10-01 15:03) [53]> как раз и получается такой глюк)
не получается, пока во всяком случае у тебя не получилось... нужно лучше стараться...
не было тут такого кода чтобы получилось описанное, а если получится (постарайся) то при чтении будут вопросы, говорил уже.
← →
sniknik © (2012-10-01 15:14) [54]> то при чтении будут вопросы
access показывает серию квадратиков, видимо у него это символ ошибки преобразования. но суть та же.
← →
stas © (2012-10-01 15:17) [55]Попробовал )
AdoQuery1.Edit;
s := TmemoryStream.Create;
Memo1.lines.SaveToStream(s);
s.position:=0;
(AdoQuery1.FieldByName("Pole1") as TBlobField).LoadFromStream(s);
s.free;
AdoQuery1.Post;
Access показал правильные буквы ) на русском. Хм...
← →
sniknik © (2012-10-01 15:19) [56]я говорил. нужно "обманывать" иначе не выйдет.
← →
sniknik © (2012-10-01 15:23) [57]кстати формат rtf не использует символы > #127. так, для справки.
← →
stas © (2012-10-01 15:23) [58]Тогда не понятно откуда автор получил китайские буквы :)
← →
icWasya © (2012-10-01 17:57) [59]Ну если такую строку
S:AnsiString;
S:="retwertre"#13#10"ftyu"#13#10"uiys%";
записать в поток, а потом прочитать как unicodestring, то получится каша, как у автора
← →
ankazh © (2012-10-05 00:39) [60]
> icWasya
не поленилась и ввела снова код, который вводила сама и который мне вы снова предложили. Ввела "света вася коля" и получила "⃠￱" (вместо 3-ого кубика какой-то перечеркнутый кружек). Затем ввожу еще...покучаю реально какие-то китайско-японские закарлючки.
Страницы: 1 2 вся ветка
Текущий архив: 2013.04.07;
Скачать: CL | DM;
Память: 0.58 MB
Время: 0.009 c