Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Вниз

Поиск в таблице и русские буквы 


anod   (2002-03-31 00:27) [0]

У меня есть таблица с данными о юзерах.
При выборе пользователя из ListBox и вводе его пароля в edit.
производится поиск. Если имя пользователя русское, то выдается ошибка, а если пароль русский, то всё ок.
Вот код поиска:
if DBlistBox1.ItemIndex>-1 then begin
name:=DBListBox1.Items.Strings[DBListBox1.ItemIndex];
pass:=ShifrDeshifr(true,epass.Text);
Table1.First;
if Table1.Locate("Name;Password", VarArrayof([name,pass]) ,[]) then
begin
...

У меня стояло поле name индексированное, я убрал индексацию, но ошибка так и осталась.



anod   (2002-03-31 11:09) [1]

?



Anatoly Podgoretsky   (2002-03-31 11:49) [2]

anod © (31.03.02 11:09)
? - это слишком общий вопрос

anod © (31.03.02 00:27)
Ни каких сообщение об ошибке, наверно обманываешь



anod   (2002-03-31 12:57) [3]

Может ошибка при создании таблицы.
Ошибка:" "Имя пользователя" is not a valid component name"
??



Lusha   (2002-03-31 13:18) [4]

Да-а-а? И на какую строку приведенного Вами кода сие ругательство выдается?



anod   (2002-03-31 13:27) [5]

3-я в приведенном выше коде, хотя странно.
pass:=epass.Text;



Lusha   (2002-03-31 13:35) [6]

Так как все же на самом деле,
pass:=ShifrDeshifr(true,epass.Text) или pass:=epass.Text;?



anod   (2002-03-31 13:49) [7]

Ну в смысле не важно, что так, что так не работает.
ShifrDeshif ничего не дает.
function TForm1.ShifrDeshifr(ShOrDesh: boolean; text:string):string;
var i,n: byte; c:char;
begin
case ShOrDesh of
true: for i:= 1 to length(text) do
begin
n:=ord(text[i]);
c:=Chr(n+1);
text[i]:=c;
end;
false: for i:= 1 to length(text) do
begin
n:=ord(text[i]);
c:=Chr(n-1);
text[i]:=c;
end;
end;
result:=text;
end;



Anatoly Podgoretsky   (2002-03-31 13:56) [8]

Ты уверен, что pass:= содержит правильный пароль и именно существующий в таблице и от подчиняется правилам для работы с текстом?
Я вижу что нет, у тебя например может выть #0



anod   (2002-03-31 14:04) [9]

Дело в том, что c именем, написанном английскими букванми проблем никаких нет.
А можно узнать, какие именно правила.
Если epass.text пустой, то pass = ""
procedure TForm1.Button1Click(Sender: TObject);
var ..
begin
name:="";
pass:="";
if DBlistBox1.ItemIndex>-1 then begin
name:=DBListBox1.Items.Strings[DBListBox1.ItemIndex];
pass:=ShifrDeshifr(true,epass.Text);
Table1.First;
if Table1.Locate("Name;Pass", VarArrayof([Name,Pass]) ,[]) then
begin
...// Здесь Какие-то расчеты массы тела, правильности питания и т.д.
end else MessageDlg("Проверте правильность ввода пароля", mtWarning, [mbOk],0);
end;



Anatoly Podgoretsky   (2002-03-31 14:16) [10]

Правильно, для английского символ #0 никогда не будет, максимум #127



anod   (2002-03-31 14:23) [11]

Не понял. А что там за #0.
А для русского?



Lusha   (2002-03-31 14:33) [12]

Правильно ругается. Замените пременную Name в коде на какую-нибудь другую (name - свойство класса, в обработчике которого Вы сие написали) и все должно встать на свои места, я думаю...



Anatoly Podgoretsky   (2002-03-31 21:52) [13]

Основы Паскала, символы иожно представлять так
"x", #код

Смотри тему "Character strings"



ArtSoft   (2002-03-31 22:59) [14]

Удалено модератором



Anatoly Podgoretsky   (2002-03-31 23:04) [15]

А почему не задаешь вопрос в отдельное ветке, задавай получишь ответ.



anod   (2002-04-01 09:47) [16]

2 Lusha
Ты гений. Спасибо, всё ок. Никогда бы сам не догадался.

2Anatoly Podgorodetsky
НЕ, я про ASCII знаю. я имел ввиду, как может получатся #0



anod   (2002-04-01 09:53) [17]

Удалено модератором



Lusha   (2002-04-01 10:05) [18]

TDBListBox отображает значения своего свойства Items.
Я бы на Вашем месте использовал TDBLookUpListBox, инициализировав его следующим образом
LookUpSource = Ваш DataSource
ListField = Необходимое поле
KeyField = Необходимое поле (то же, что и ListField)

Считывание и установку необходимого значения производить свойством KeyValue. И все дела...



anod   (2002-04-01 10:17) [19]

2 Lusha
Спасибо.
Модератору: я ничего плохого не писал.



Anatoly Podgoretsky   (2002-04-01 11:46) [20]

anod © (01.04.02 09:47)
#255+1



anod   (2002-04-01 12:39) [21]

2 Anatoly Podgoretsky
По таблице русские символы заканчиваются на 239.

А это я просто не доделал ещё. Должно быть. #239+1(я) -> #160(а)




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.028 c
1-69893           ymin                  2002-04-09 12:21  2002.04.22  
А как сделать, чтобы форма была или на весь экран или Minimize?


3-69714           Zak                   2002-03-26 08:52  2002.04.22  
JPG в базу данных


3-69723           Hermit                2002-04-01 12:18  2002.04.22  
DBGrid и режим редактирования


6-69939           Sligger               2002-02-08 20:44  2002.04.22  
Почтовая программа


14-70032          Dimka Maslov          2002-03-12 17:07  2002.04.22  
NOT XOR