![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Аргументы имеют неверный тип, выходят за пределы допустимого... [D7]
McLotos © (2013-01-14 15:33:00)Доброго времени суток, и снова я ловлю СТОП получая ошибку
Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.
Как я получаю ошибку:
В общем есть клиент. который чтобы подключиться к серверу должен послать логин и пароль а в ответ получить некое число, которое указывает ему что делать дальше
var
Account : TStringList;
begin
Account := TStringList.Create;
Account.CommaText := Socket.ReceiveText; //получаем строку от клиента
if (Account.Values['Login']<>'') and (Account.Values['Password']<>'') // вытягиваем оттуда нужные данные
then
begin
log.Lines.Add (Account.Values['Login'] + ' + ' + Account.Values['Password']); //показываем админу сервера
try
with ADOQuery do
begin
ADOQuery.SQL.Clear;
{вытягиваем из БД значение поля access таблицы access}
ADOQuery.SQL.Add('SELECT level FROM access WHERE (login=:qlogin) and (passw=:qpassw)');
ADOQuery.Parameters.ParamByName('qlogin').value := Account.Values['Login'];
ADOQuery.Parameters.ParamByName('qpassw').value := Account.Values['Password'];
ADOQuery.Active:=true;
{где-то до этой строки программа начинает материться}
ShowMessage(IntToStr(RecordCount)); //а затем радостно нам сообщает что в базе есть 1 такой пользователь
end;
except
on e:Exception do
end;
end;
end;
Игорь Шевченко (2013-01-14 19:17:00) [1]http://ln.com.ua/~openxs/articles/smart-questions-ru.html
McLotos (2013-01-14 18:35:00) [2]id - int(2)
login - varchar(16)
passw - varchar(32)
level - int(2)
DVM (2013-01-14 18:13:00) [3]
> McLotos © (14.01.13 15:33)
> Аргументы имеют неверный тип, выходят за пределы допустимого
> диапазона или вступают в конфликт друг с другом.
Поля login и passw в таблице access какой тип имеют? Какую размерность?
Названия login, acces, level я бы все же поменял, от греха, на что нибудь более уникальное.
McLotos (2013-01-14 18:03:00) [4]> а delphi тут и не при чем вообще то.
да? а в чем тогда проблема? почему выскакивает эта ошибка?
в общем ясно, тему можно уже не посещать, 17 ответов и, извините, ни одного. который реально бы решил проблему, ошибка как была, так и осталась, буду пробовать методом научного тыка, может и найду в чем баг.
Всем спасибо.
sniknik (2013-01-14 17:58:00) [5]> просто на delphi перешёл всего 3-4 дня назад
а delphi тут и не причем вообще то.
McLotos (2013-01-14 17:52:00) [6]
> это уже твои проблемы, не так ли?
Спасибо, Ega23. Вы очень любезны.
McLotos (2013-01-14 17:50:00) [7]Можно отвечать как угодно, я в программировании уже не первый год, просто на delphi перешёл всего 3-4 дня назад, раньше программировал только на php, надоело, захотелось вспомнить то что в колледже проходил когда-то. Тем более delphi мне сейчас кажется технологией для лентяев, потому-что одно дело когда ты пишешь каждую строчку кода в блокноте и знаешь там каждую букву, и совсем другое, когда большая часть кода появляется при движении мышки по экрану.
Ega23 (2013-01-14 17:48:00) [8]
> - либо я просто начинаю Вас игнорировать как пустую переменную.
> Хотя да, следуя Вашему же совету - Пустую переменную нужно
> разрушать! =)
Есть третий вариант: я просто проигнорирую твою проблему. Точнее, тебе уже всё ответили. Ну а то, что ты не понимаешь ответов - это уже твои проблемы, не так ли?
sniknik (2013-01-14 17:42:00) [9]> абсолютно не информативны
но от них/ответа(реакции ни них) зависит как тебе отвечать.
McLotos (2013-01-14 17:33:00) [10]+ не "продолжаете", а "прекращаете"
у меня что-то ошибки в логике начинаются
McLotos (2013-01-14 17:32:00) [11]Ega23 Ваши сообщения абсолютно не информативны, варианта 2:
- либо Вы продолжаете забивать форум пустыми по смыслу и содержанию сообщениями,
- либо я просто начинаю Вас игнорировать как пустую переменную. Хотя да, следуя Вашему же совету - Пустую переменную нужно разрушать! =)
Ega23 (2013-01-14 17:14:00) [12]
> в какой части кода?
Это твой код, или нет?
McLotos (2013-01-14 16:59:00) [13]> поставь в кавычки []
не понял
где?
в какой части кода?
sniknik (2013-01-14 16:45:00) [14]+++
login
sniknik (2013-01-14 16:45:00) [15]++
level access могут быть зарезервированными словами. и тогда может быть типа варнинга, а после работает.
поставь в кавычки []
sniknik (2013-01-14 16:42:00) [16]> sniknik почему хрень?
эксепты прятать нельзя.
with он не просто так, он для чего то... сначала ставить with а после писать так как будто его нет ... "хрень какая то"
> читайте выше, я объяснил этот момент
где? не вижу.
+
если
> //а затем радостно нам сообщает что в базе есть 1 такой пользователь
доходит до этой строки, и таки сообщает (а не перекидывает в ексепт), то ошибка дебагтайма, можно "забить" на нее.
McLotos (2013-01-14 16:32:00) [17]sniknik злой ты =)
Ega23
1. Account не разрушаю потому-что он дальше ещё много где используется. это же не весь код, а только проблемная часть
2. Варианты, предложения, идеи?
3. Я просто пробовал оба варианта и через with do и просто с указанием элемента. в моем посте представлен вариант 2in1
Ну хорошо. как вариант я уберу
with ADOQuery do
всё-равно в представленном примере ADOQuery дописано в каждую строку
Вам от этого станет легче понять моя проблему? Думаю нет
4. Вопрос не относится к теме, поэтому отвечать не обязан =)
sniknik почему хрень? читайте выше, я объяснил этот момент
sniknik (2013-01-14 15:51:00) [18]хрень какая то
with ADOQuerydo
begin
ADOQuery.SQL.Clear;
sniknik (2013-01-14 15:49:00) [19]вот где проблема
on e:Exception do
end;
Ega23 (2013-01-14 15:47:00) [20]Во-первых, у тебя утечка памяти: ты не разрушаешь Account.
Во-вторых, зачем with ADOQuery?
В-третьих, его надо закрывать, вообще-то.
В-четвёртых: признайся, сам писал код, или спёр у кого-то?