Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.88 MB
Время: 0.043 c
1-69859
MCFire
2002-04-08 17:20
2002.04.22
Как закинуть меню в панель инструментов


3-69656
Артём
2002-04-02 19:42
2002.04.22
Вопрос по триггерам


1-69890
Alex Y
2002-04-08 04:59
2002.04.22
Работа с ячейками таблицы Word


1-69922
yennifaire
2002-04-09 18:41
2002.04.22
Как правильно использовать функцию power?


6-69966
rambo69
2002-02-08 20:32
2002.04.22
Снова сетевой трафик





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский