Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.22;
Скачать: CL | DM;

Вниз

Поиск в таблице и русские буквы   Найти похожие ветки 

 
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(а)



Страницы: 1 вся ветка

Текущий архив: 2002.04.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
4-70060
Velocity
2002-02-18 10:12
2002.04.22
ListBox на WinAPI


3-69664
ruslan_as
2002-04-02 18:08
2002.04.22
ClienDataSet в InterBase


14-69993
Knight
2002-03-14 19:12
2002.04.22
логика не фурычит...черта Шеффера


1-69912
CrazyXP
2002-04-08 20:19
2002.04.22
Несколько вопросов


3-69666
Sewix
2002-03-28 20:21
2002.04.22
Поиск по Paradox