Форум: "Базы";
Текущий архив: 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(а)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c