Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
15-1354912202
Юрий
2012-12-08 00:30
2013.04.07
С днем рождения ! 8 декабря 2012 суббота


15-1355469226
Toha_Nik
2012-12-14 11:13
2013.04.07
Живем все быстрей:)


2-1349255869
cobalt
2012-10-03 13:17
2013.04.07
Incompatible types


2-1348317559
Mikishanya
2012-09-22 16:39
2013.04.07
браузер


15-1355227400
O'ShinW
2012-12-11 16:03
2013.04.07
Предлагаю турнир по шахматам. Блиц.