Главная страница
    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.042 c
14-69988
Hel
2002-03-14 13:54
2002.04.22
---|Ветка была без названия|---


1-69765
SJ_Hunter
2002-04-10 00:02
2002.04.22
Euqation и рисование


14-70026
Esa
2002-03-18 13:40
2002.04.22
AccessViolation


7-70052
НЕО
2002-01-26 10:58
2002.04.22
LOGIN пользователя, работающего на машине в сети...


1-69928
Dimaiv
2002-04-09 20:39
2002.04.22
Что делает процедура ProcessFile





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский