Вопрос № 65775: Здравствуйте, уважаемые эксперты.
у меня 2 вопроса:
1. есть 2 поля MaskEdit со вводом дат и Label, мне нужно чтобы Label считало разность дат в днях (сколько прошло дней с первой даты по вторую) это должно происходить при нажатии кнопки.
...Вопрос № 65790: Добрый день всем!
Требуется помощь следующего плана:
Пытаюсь сделать несложную базу данных на Delphi, где нужно делать параметрический запрос через SQL по диапазону дат. Т.е. задается две даты в текстовых полях формы и с помощью зна...Вопрос № 65792: Здравствуйте, уважаемые эксперты!
Можно ли сделать так чтобы алиас (база данных DBF) автоматически создавался в BDE Administrator, при запуске программы на новом компютере?если да то как?
Спасибо....Вопрос № 65814: Здравствуйте господа специалисты, у меня такая проблема - в WinXP пишу help к программе в word-e, конвертирую его в *.hlp и текст выводится "краказябрами", и в WinXP и в Win98. Делаю все то же самое в Win98 текст выводится нормально, и в Wi...Вопрос № 65843: Добрый вечер...
Имеется учебная программа на Дельфи. Тест. Выдаются вопросы, и в зависимости от ДА или НЕТ меняется значение счетчика. Выдает все время один и тот же, последний результат. Не могу найти ошибку.
Код в приложении....Вопрос № 65891: Хочу реализовать screensaver - матрица в 2D, падающие символы.
Только что-то не могу понять общий алгоритм, т.е. как сделать, чтобы был эффект:
* падающих символов
* затемнённых символов
* ярких символов
Может быть не совсем ...
Вопрос № 65.775
Здравствуйте, уважаемые эксперты.
у меня 2 вопроса:
1. есть 2 поля MaskEdit со вводом дат и Label, мне нужно чтобы Label считало разность дат в днях (сколько прошло дней с первой даты по вторую) это должно происходить при нажатии кнопки.
2. я написал программу с базой данных DBF хочу ее поставить на другой комп, для базы я создал алиас, если в другом компе есть BDE Admistrator, то я там создаю алиас, а если его нет , то что делать подскажите?
Заранее спасибо.
Отправлен: 06.12.2006, 11:52
Вопрос задал: Anatolyj (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Anatolyj!
1. В разделе uses подключите модуль DateUtils и используйте функцию
DaysBetween(конечная дата, начальная дата) она возвратит вам количество дней
2. Заключите код в программе (добавляющий алиас) в блок try except
и на ошибку пусть выдает сообщение что BDE не найдет и просьбу его установить. а также application.terminate;
--------- Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
procedure TForm1.Button6Click(Sender: TObject);
var d1,d2:tdatetime;i:real;
begin
d1:=strtodate('10.12.2006');
d2:=strtodate('01.12.2005');
i:=d1-d2;
showmessage(floattostr(I));
end;
2 вопрос:
при использовании Table
прописать в
свойстве TableName полностью путь и имя файла БД
при использовании QUERY
прописать в
свойстве DataBaseName путь (без имени файла) к Вашей БД
в этих случаях альясы не нужны
Необходимо, чтобы на новой машине стоял BDE, дистрибутив которого можно найти в инете. (весит он не очень много насколько я помню)
или на установочном диске Delphi (..installcommonorland shareddbe)
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 8-ой класс)
Ответ отправлен: 06.12.2006, 12:17 Оценка за ответ: 5
Отвечает: Химяк Виктор Васильевич
Здравствуйте, Anatolyj!
1. Дополнение:Label1.Caption:=InttoStr(DaysBetween(StrToDate(MaskEdit1.Text),StrToDate(MaskEdit2.Text)));
2. 1.Значит его нужно поставить, н-р с дистрибутива Дельфи.
2. В компоненте DataBase пропишите полный путь к каталогу БД.
На машине клиента, необходимо точно создать путь к БД, как на вашей машине.
Ответ отправил: Химяк Виктор Васильевич (статус: 2-ой класс)
Ответ отправлен: 06.12.2006, 18:30
Вопрос № 65.790
Добрый день всем!
Требуется помощь следующего плана:
Пытаюсь сделать несложную базу данных на Delphi, где нужно делать параметрический запрос через SQL по диапазону дат. Т.е. задается две даты в текстовых полях формы и с помощью значений из этих полей формируется SQL-запрос (в виде текстовой строки). Проблема в том, что я не знаю как состыковать строковую информацию и значения дат.
Например, формируется строка
select pole1,pole2,pole3
from table1
where table1.pole1 between <data1> and <data2>
где значения data1 и data2 берутся из текстовых полей формы, а pole1 - типа Date
В процессе выполнения программы получается следующая SQL-строка:
select pole1, pole2, pole3
from table1
where table1.pole1 between 01.01.2000 and 30.05.2003
При этом происходит ошибка. Нужно ли как-то преобразовывать строку обозначающую дату. Как, например, в ACCESS, там дату заключают в знак # ? Здесь такое не прошло.
И второй вопрос как заставить Delphi, чтобы и в форме, и в таблице вводился формат даты dd.mm.yyyy. (при этом работал нормально запрос).
да Вам нужно преобразовать текстовый тип в тип date
select pole1, pole2, pole3
from table1
where table1.pole1 between to_date('01.01.2000') and to_date('30.05.2003')
или
select pole1, pole2, pole3
from table1
where table1.pole1 between to_date('01.01.2000','dd.mm.yyyy') and to_date('30.05.2003','dd.mm.yyyy')
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 8-ой класс)
Ответ отправлен: 06.12.2006, 14:40 Оценка за ответ: 3 Комментарий оценки: Что такое to_date? Я не нашел такой функции. И мне нужно обработать не константу-строку как примере, а поле со строковым значением.
Вопрос № 65.792
Здравствуйте, уважаемые эксперты!
Можно ли сделать так чтобы алиас (база данных DBF) автоматически создавался в BDE Administrator, при запуске программы на новом компютере?если да то как?
Спасибо.
Отправлен: 06.12.2006, 15:11
Вопрос задал: Anatolyj (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Gladiator
Здравствуйте, Anatolyj!
Program Book;
uses
Forms,
Windows,
Registry,
SysUtils,
Messages,
Classes,
DBTables,
Module in 'Module.pas' {DataModule1: TDataModule},
Data in 'Data.pas' {MainForm};
{$R *.RES}
var Error: boolean;
Index: integer;
L : TStringList;
Const Title='База данных предприятия';
Label Quit;
begin
Application.Initialize;
Application.Title:=Title;
with TRegistry.create do begin
Rootkey := HKEY_LOCAL_MACHINE;
if not (OpenKey('SOFTWAREBORLANDDATABASE ENGINE', false)) then begin
MessageBox(0,PChar('Не установлена BDE на этот компьютер.'),
PChar(Title), mb_OK);
goto Quit;
end else begin
CFGFile := ReadString('CONFIGFILE01');
Free;
Application.CreateForm(TDataModule1, DataModule1);
end;
DataModule1.Session1.ConfigMode := cmPersistent;
L := TStringList.Create;
DataModule1.Session1.GetAliasNames(L);
for Index := 0 to L.Count - 1 do
if L.Strings[Index]='MyBase' then begin
DataModule1.Session1.DeleteAlias('MyBase');
Break;
end;
L.Add('DEFAULT DRIVER=DBASE');
L.Add('PATH='+ExtractFilePath(Application.Exename)+'Data');
DataModule1.Session1.AddAlias('MyBase', 'STANDARD', L);
DataModule1.Session1.SaveConfigFile;
Error:=false;
try
DataModule1.Session1.Active:=true;
except
MessageBox(0,PChar('Ошибка настройки базы данных MyBase(DBase) !!!'),
PChar(Title), mb_OK);
Error:=true;
end;
L.Free;
if Error then goto Quit;
try
DataModule1.Cust.Active:=true;
except
MessageBox(0,PChar('Отсутствуют файлы базы данных !!!'),
PChar(Title), mb_OK);
Error:=true;
end;
if Error then goto Quit;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
Quit:
end;
end.
В DataModule1 нужно положить TSession и TTable из вкладки BDE.
Ответ отправил: Gladiator (статус: 6-ой класс)
Ответ отправлен: 06.12.2006, 15:27 Оценка за ответ: 5
Отвечает: sir henry
Здравствуйте, Anatolyj!
Можно, отчего ж нельзя. :) Главное, чтобы на той машине уже стоял BDE.
Var
Params: TStringList;
Begin
Params:=TStringList.Create;
Params.Add('DEFAULT DRIVER=DBASE');
Params.Add('Path=Путь_к_Вашей_базе_данных');
Session.AddAlias('MyDB', 'DBASE', Params);
Session.SaveConfigFile;
End;
Переменная Session создается автоматически, если у Вас подключен модуль DBTable. Она обслуживает текущее подключение к базе данных.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 06.12.2006, 15:35 Оценка за ответ: 5
Вопрос № 65.814
Здравствуйте господа специалисты, у меня такая проблема - в WinXP пишу help к программе в word-e, конвертирую его в *.hlp и текст выводится "краказябрами", и в WinXP и в Win98. Делаю все то же самое в Win98 текст выводится нормально, и в Win98, и в WinXP. Такая же проблема когда конвертирую PageMaker в pdf, в WinXP "краказябры" в Win98 нормально. Менял в реестре кодировку c_1250.nls по c_1258.nls на c_1251.nls все сразу и по частям нулевой результат. Подскажите, как решить проблему.
Отправлен: 06.12.2006, 17:25
Вопрос задал: Sgainf (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Алтунин Василий Владимирович
Здравствуйте, Sgainf!
Это проблема может возникнуть если вы используете шрифты без кирилической части. Т.е. ими можно писать только на агнлийском. Попробуйте использовать True Type шрифты вроде Times New Roman. Или же в системе не установлен шрифт, который вы использовали при создании документа в Pagemaker.
Ответ отправил: Алтунин Василий Владимирович (статус: 2-ой класс)
Ответ отправлен: 07.12.2006, 02:36 Оценка за ответ: 1
Вопрос № 65.843
Добрый вечер...
Имеется учебная программа на Дельфи. Тест. Выдаются вопросы, и в зависимости от ДА или НЕТ меняется значение счетчика. Выдает все время один и тот же, последний результат. Не могу найти ошибку.
Код в приложении.
Всё очень просто! Вы видимо не учли, что ваш массив начинается с 1. А по вашему коду вы составили цикл, где индекс массива не может быть равным 1.
Вот правильный ответ:
procedure Make;
begin
if num <= kol
then
begin
num:=num+1;
Form1.Edit1.Text:= vopr[num];
end
И ещё,не стоит писать процедуры без формальных типов данных, соответтственно и объявлять. В некоторых кодах программа проста не будет работать.
Удачи в программировании!
Ответ отправил: KiberZero (статус: 3-ий класс)
Ответ отправлен: 06.12.2006, 23:55
Отвечает: Химяк Виктор Васильевич
Здравствуйте, Саша Александрова!
Ошибка в процедуре Make. В приложении указана ошибка и исправление.
Удачи!
Приложение:
Ответ отправил: Химяк Виктор Васильевич (статус: 2-ой класс)
Ответ отправлен: 06.12.2006, 23:57 Оценка за ответ: 5
Отвечает: Щекочихина Татьяна Николаевна
Здравствуйте, Саша Александрова!
Обратите внимание, что индекс массива вопросов начинается с 1, а индекс массива результатов - с 0. Так как Вы используете переменную num для вывода результата, то инициализировать надо ее тоже нулем. Изменять свое значение num должен только по нажатию на "ДА", а сравнивать с kol надо переменную s. Т.е. s- это счетчик, а num - индекс результата. Cм.приложение. Желаю успехов.
Хочу реализовать screensaver - матрица в 2D, падающие символы.
Только что-то не могу понять общий алгоритм, т.е. как сделать, чтобы был эффект:
* падающих символов
* затемнённых символов
* ярких символов
Может быть не совсем понятно объяснил, но тот, кто видел фильм "Матрица" или screensaver на эту тему, должен меня понять.
Повторюсь, нужно не тупое скролирование символов, а скролирование с эффектами.
OpenGL и DirectX не надо.
Цвета будут: тёмно зелёный, ярко зелёный и белый.
Можно исходник на Delphi.
Спасибо.
Отправлен: 07.12.2006, 02:01
Вопрос задал: S@nch0 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Алтунин Василий Владимирович
Здравствуйте, S@nch0!
Без использование DirectX или OpenGL боюсь не получится, так как вам нужен полноэкранный режим. В текстовом же режиме при работе с видеопамятью возможно сделать и эффект падающих символов их светлее и темнее. Но только вот напрямую под XP и под Delphi сомневаюсь что это получится...
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, S@nch0!
Я так понимаю, что по этой ссылке лежат все-таки исходники. Правда, не уверен, что на Delphi. И проверьте эти файлы антивирусом.
--------- Не узнаешь - не попробуешь.