Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на Delphi

Выпуск № 096
от 08.11.2002, 09:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 268
Отправлено ответов: 478
Активность: 178.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Idle Sign
Статус: Доверительный
Общий рейтинг: 142.16
[Подробней >>]
Jadd
Статус: Профессиональный
Общий рейтинг: 144.34
[Подробней >>]
Vladimir
Статус: Опытный
Общий рейтинг: 110.36
Телефон: (08242) 43599 40099 раб 41255 дом
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 115.87
URL: Пристанище неодинокого программиста
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 114.94
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Painbringer
Статус: Профессиональный
Общий рейтинг: 130.11
URL: Музычка, стишки и прочая дрянь
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 253. народ, для компиляции нужен variants.dcu или variants.pas незнаю что за библиотека, но у меня ее нет... (ответов: 2)
Вопрос № 254. Ув. Эксперты! Помогите пожалуйста! Это для меня первая серьезная программа, поэтому очень надеюсь на... (ответов: 3)
Вопрос № 256. Здравствуйте, Скажите пожалуйста для чего нужен параметр Key при содании баз данных в Database Desk... (ответов: 2)
Вопрос № 257. Я создал Paradox 7 Table на Database Desktop после чего первое поле(code) определил как (+)+- Autoin... (ответов: 2)

Вопросов: 4, ответов: 9


 Вопрос № 253

народ, для компиляции нужен variants.dcu или variants.pas
незнаю что за библиотека, но у меня ее нету:)
киньте на freeart@cmail.info.kuzbass.net, если не жалко... очень надо...



Вопрос отправлен: 03.11.2002, 17:44
Отправитель: Ландграф Павел

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Здравствуйте, Ландграф Павел!
===== Pro bono publico, no bloody panico! =====
Лови мылом... Вообще стандартный юнит... На диске с Дульфей смотреть надо было, если не поставился...


Ответ отправлен: 04.11.2002, 06:06
Отправитель: Idle Sign


Отвечает Jadd

Приветствую Вас, Ландграф Павел!
Наверное variant.dcu. Это файл из стандартной поставки, в противном случае ищи.

Ответ отправлен: 06.11.2002, 02:54
Отправитель: Jadd


 Вопрос № 254

Ув. Эксперты! Помогите пожалуйста!
Это для меня первая серьезная программа, поэтому очень надеюсь на вашу помошь.
Эта программа решает(по крайне мере пытается) квадратные уравнения, но она почему-то не работает(при нажатии на BinBtn1 ничего не происходит). Где я ошибся, и как исправить эти ошибки?!!
Заранее благодарю!!!
Исходник:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject);
begin
Tag := 1;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
Tag := 1;
end;
procedure TForm1.Edit3Change(Sender: TObject);
begin
Tag := 1;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
A,B,C,X1,X2,D1,D : real;
begin
if Tag = 0 then begin
ShowMessage('Неправильный ввод!!!') and exit;
try
A := StrToFloat(Trim(Edit1.Text));
Except
ShowMessage('Неправильно введен операнд A');
try
B := StrToFloat(Trim(Edit2.Text));
except
ShowMessage('Неправильно введен операнд B');
try
C := StrToFloat(Trim(Edit3.Text));
except
ShowMessage('Неправильно введен операнд C');
if CheckBox2.Checked then
begin
D1 := (sqrt((B*B)+ A*C));
X1 := (((-B)+D1)/A);
X2 :=(((-B)-D1)/A)
end
else
D := (sqrt((B*B) + 4*A*C));
X1 := (((-B)+d)/2*A);
X2 := (((-B)-D)/2*A);
end;
if CheckBox1.Checked and CheckBox2.Checked then
begin
Memo1.Lines.Add('D1 = ' + FloatToStr(D1));
Memo1.Lines.ADD('X1 = ' + FloatToStr(round(X1)));
Memo1.Lines.Add('X2 = ' + FloatTOStr(round(X2)));
end;
if CheckBox1.Checked and CheckBox2.Checked = false then
begin
Memo1.Lines.ADd('D = ' + FloatToStr(d));
Memo1.Lines.ADD('X1 = ' + FloatToStr(Round(x1)));
Memo1.Lines.ADD('X2 = ' + FloatToStr(Round(X2)));
end;
if CheckBox1.Checked = false and CheckBox2.Checked = false then
begin
Memo1.Lines.Add('D = ' + FloatToStr(D));
Memo1.Lines.Add('X1 = ' + FloatToStr(X1));
Memo1.Lines.Add('X2 = ' + FloatToStr(X2));
end;
if CheckBox2.Checked then
Memo1.Lines.Add('D1 = ' + FloatToStr(D1));
Memo1.Lines.Add('X1 = ' + FloatToStr(X1));
memo1.Lines.Add('X2 = ' + FloatToStr(x2));
end;
end;
end;
end.



Вопрос отправлен: 03.11.2002, 19:56
Отправитель: Elvis

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Доброе время суток, Elvis!
===== Pro bono publico, no bloody panico! =====
Куча ошибок, компилятор негодует...
См. приложение (переписанная функция).
ПиС: невнимательность вещь излечимая.
ПиПиС: Специально для вписывания кода предусмотрено "ПРИЛОЖЕНИЕ".

Приложение:

Ответ отправлен: 04.11.2002, 15:16
Отправитель: Idle Sign


Отвечает Vladimir

Приветствую Вас, Elvis!
Кусок твоего кода:
if Tag = 0 then begin
ShowMessage('Неправильный ввод!!!') and exit;
try
A := StrToFloat(Trim(Edit1.Text));
По-моему, перед try должно быть else, иначе этот кусок никогда не выполнится.


Ответ отправлен: 04.11.2002, 09:29
Отправитель: Vladimir


Отвечает Jadd

Приветствую Вас, Elvis!
Все просто. Проверяя Tag надо указывать объект, членом которого этот Tag является.Все и заработает, поверь.

Ответ отправлен: 06.11.2002, 02:50
Отправитель: Jadd


 Вопрос № 256

Здравствуйте,
Скажите пожалуйста для чего нужен параметр Key при содании баз данных в Database Desktop? Заранее благодарен.



Вопрос отправлен: 04.11.2002, 16:38
Отправитель: dude

[Следующий вопрос >>] [Список вопросов]

Отвечает Vladimir

Доброе время суток, dude!
Если тип поля 'Alpha', значек в этом параметре показывает, нужно-ли упорядочивать записи по этому полю.


Ответ отправлен: 04.11.2002, 17:00
Отправитель: Vladimir


Отвечает Артём Шегеда

Доброе время суток, dude!

Key (англ. "ключ") - признак того, что данное поле является ключевым, т.е. приоритетным. В частности, поле, являющееся ключевым, при внесении записи в таблицу не может быть пустым и не может повторять ранее внесенные значения. Для таблиц Paradox (а может быть, для других типов) - синоним "primary index". Поиск по такому полю происходит быстрее, чем по вторичным индексам

Ответ отправлен: 05.11.2002, 11:07
Отправитель: Артём Шегеда


 Вопрос № 257

Я создал Paradox 7 Table на Database Desktop после чего первое поле(code) определил как (+)+- Autoincrement и установил key(*). Дальше я создал около 5 полей потом все сохранил и перешел в среду Delphi. После того как я ввел некоторое количество записей я все стер, затем начал опять вводить записи и тогда заметил что значения поля code не стерлись!!! А они продолжают постоянно рости. Скажите пожалуйста почему так? Для чего нужен key? Вообще Я хочу чтобы code указывал на номер записи в базе. Надеюсь Вы поняли.
Спасибо!





Вопрос отправлен: 04.11.2002, 18:45
Отправитель: dude (squeeze_ms@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает baldr

Приветствую Вас, dude!
Ай-яй-яй! Никогда не пиши базу данных, не изучив хотя бы немного теории! 100%, что без
знания основ теории твоя база накроется в первую же неделю...
Начну с key... Это - ключ таблицы. Он же - индекс. Объяснять не буду - это довольно долго,
тебе либо другой кто-нибудь тут объяснит, либо лучше почитай книжки или справочники. Скажу
лишь, что ключ в любой таблице лучше сделать. Он должен быть уникальным. Так, автоинкрементное
поле подходит для этих целей, хотя некоторые типы таблиц (напр. InterBase) его не любят.
Никаких операций с ключем таблицы лучше не производить, потому что в случае нарушения его уникальности
вся твоя база рухнет. Порядковый номер? :( Плохая идея и вот почему... Понимаешь, база данных,
или, как у тебя, простая таблица, предназначена для хранения данных, причем они могут постоянно
обновляться - добавляться, удаляться и пр... Когда база маленькая (меньше 100 записей) - ты еще
можешь после каждой операции (в общем случае - транзакции) перенумеровать все записи, при, скажем,
удалении записи откуда-нибудь из середины, но когда у тебя будет ок. 10000 записей (тоже не очень-то
и большая база!), комп будет каждый раз очень эффектно тормозить. Это было только во-первых! Во-вторых,
база данных предполагает, что данные редко будут отображаться на экране все сразу. Гораздо чаще
(и обычно!) мы имеем дело с набором отфильтрованных по какому-то признаку данных. А если у тебя
еще и сортировка есть по другому полю? В общем, этот твой порядковый номер не нужен. Если ты
хочешь указать на конкретную запись в таблице - пользуйся ключевым полем (про него я уже упоминал)
или просто делай Lookup, но все равно я не вижу ни одной причины для "порядкового номера".
Так... Еще спрашиваешь про то, что индексы растут постоянно... В общем, это одно из свойств ключа...
Вернее это... ээ... В общем, я уже говорил, что каждая запись должна быть уникальна. А теперь
представь, что у тебя есть две версии одной и той же таблицы. И надо их синхронизировать (ох,
до чего жизненная задача!!). А ключ не всегда возрастает, а, например, если нет значения с номером
245, то он его и примет от балды, не замечая, что вообще-то был уже давно и номер 567... А во второй
таблице - та же история... В общем,синхронизация превращается в нетривиальную задачу с красивым
жужжанием диска... А если обе таблицы - по 100000 записей, расположены на серверах в разных
частях света? Это ж они два Новых Года встретят за одно обновление! :) В общем, я тебя, конечно же
пугаю - это не совсем так и страшно. И индексы сбросить в любое число тоже можно. Функцию я, правда,
сейчас не помню, но во-первых, попробуй применить операцию "pack table" в Database Desktop, а если
это не поможет, то я видел точно такой же вопрос с ответом на форуме сайта www.delphi.mastak.ru
(сорри, если адрес перепутал!)...
В общем, удачи в написании баз данных (хотя от себя скажу - та-акой это геморрой эти базы!),
если будут еще вопросы - пиши.


Ответ отправлен: 04.11.2002, 23:51
Отправитель: baldr


Отвечает Painbringer

Доброе время суток, dude!
так и должно быть! автоинкрементное поле назад не возвращается. и при удалении записи из середины таблицы у тебя нмер остается потеряным (собственно как и из конца таже). нафиг нада? предположим у тя есть две связаых по полю code таблицы:
tovar.db
+ code
a nazv
n cena
sklad.db
i code
n kolvo
пусть пусть у тебя в tovar.db имелась запись: (3 - бананы - 10) а в sklad.db (3 - 100). допустим запись в tovar удаляется, а связананая с ней в sklad нет. потом добавляем в товар новую запись и твое code опять принимает значение 3. получаем лажу. в место того чтоб ругаться - нет соответствующей записи в tovar имеем полную хрень.
key - это первичный ключ - по нему строиться главный индекс таблицы.

Ответ отправлен: 05.11.2002, 00:09
Отправитель: Painbringer



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (39)
C / C++ (25)
Perl (5)
Delphi (13)
Pascal (20)
Basic / VBA (8)
Java / JavaScript (9)
PHP (7)
MySQL / MSSQL (7)
Пользователю
Windows 95/98/Me (27)
Windows NT/2000/XP (16)
"Железо" (26)
Поиск информации (10)
Администратору
Windows NT/2000/XP (9)
Linux / Unix (13)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (5)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное