Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в таблице и русские буквы [D6, Paradox]


Страницы:   1 2

anod ©   (2002-03-31 00:27:00) 

У меня есть таблица с данными о юзерах.
При выборе пользователя из 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-04-01 12:39:00) [1]

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

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


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

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


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

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


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

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

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


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

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


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

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

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


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

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


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

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


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

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

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


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

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


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

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


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

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


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

Дело в том, что 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 13:56:00) [14]

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


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

Ну в смысле не важно, что так, что так не работает.
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;


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

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


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

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


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

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


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

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


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

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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо