Вопрос № 95542: Доброго времени суток. Помогите с проблемой (см.приложение): в мемо нужно вывести текущее время и строку, сформированную в процедуре, а выводится 2 раза время. Скорее всего я не корректно использую PChar и String, но что именно не так понять не могу....Вопрос № 95576: Здравствуйте уважаемые эксперты.
Нашел на сайте Delphi World алгоритм градиентной заливки (смотрите код в приложении)
Но не знаю по чему (возможно из-за моей глупости или не внимательности) но если значение переменной h велико, то цвет всей ...Вопрос № 95628: У меня тут такой вопрос, у меня вот тут прога и с помощью компонентов RobioButton, в ней меняется интерфейс проги,как можно зделать чтобы при закрытии проги сохранялись параметры нажатых кнопок RadioButton и CheckBox?...Вопрос № 95640: Доброе время суток! Подскажите пожалуйста как
решить такую проблему: необходимо чтобы программа считывала курсы валют. Заранее спасибо....Вопрос № 95654: Здравстуйте, Эксперты!
Пишу базу данных.
С помощью закладки ВDE, пытаюсь отобразить на компоненте DBGrid данные из таблицы Акцесса, посредством TTable (закладка BDE).
Для базы данных я задал алиас в в BDE Administrator - MyBase.
Так в...
Вопрос № 95.542
Доброго времени суток. Помогите с проблемой (см.приложение): в мемо нужно вывести текущее время и строку, сформированную в процедуре, а выводится 2 раза время. Скорее всего я не корректно использую PChar и String, но что именно не так понять не могу.
Приложение:
Отправлен: 18.07.2007, 12:29
Вопрос задал: Игорь (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 12)
Отвечает: Stari
Здравствуйте, Игорь!
после запуска процы "vv" результат находиться в "mes" а она объявлена локально в процедуре. нужно результат присваивать глобальной переменной или использовать функцию.
а время вывести можно и по другому timetostr(time)
Пример:
Приложение:
Ответ отправил: Stari (статус: 1-ый класс)
Ответ отправлен: 18.07.2007, 12:53
Отвечает: Виктор Пырлик
Здравствуйте, Игорь!
Pchar – это указатель на символьный тип, предназначен для адаптации с типом *char (LPSTR и т.д.) языка С/С++. В частности, такое приведение (PChar(<строка>) необходимо для передачи строковых параметров в функции API Windows и другие функции, вызываемые из библиотек написанных на С/С++. Сам по себе указатель предполагает наличие инициализированной символьной переменной. Вы же пытаетесь очень «грубо» заставить на что-то его указывать – у меня работает ваша процедура с переменным успехом, либо «съедаются»
последние символы, либо действительно повторяется дата – это результат того мусора, что лежит в стеке в контексте вызова метода OnClick. Мы работаем с памятью. Более корректно отработает ваша функция так:
s:='мама мыла раму';
mes:= PChar(s);
Но, для Pascal (Delphi) родной тип – String, символьный тип переменной длины. Работайте с ним, или более подробно изучите работу с памятью (указатели, ссылки).
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 18.07.2007, 13:43
Вопрос № 95.576
Здравствуйте уважаемые эксперты.
Нашел на сайте Delphi World алгоритм градиентной заливки (смотрите код в приложении)
Но не знаю по чему (возможно из-за моей глупости или не внимательности) но если значение переменной h велико, то цвет всей канвы становится одним. Проверьте пожалуйста, алгоритм на широких канвах. Возможно, у кого ни будь, есть другой алгоритм (только не намного сложнее этого)?
В целом, приведенный Вами код вообще не рабочий: 1. Функции RGB нужно передавать три параметра типа Byte, а передаются три параметра типа Extended (т.е. тут еще и функция округления требуется). 2. Процедура Rectangle(I,Y1,I+1,Y1) должна рисовать прямоугольник, высота которого = 0. В лучшем случае, это нарисует только линию, а не целый градиент (или же вовсе ничего не нарисует).
В общем, я несколько изменил данную функцию. Пример смотрите в приложении.
Разложение цветов на три составляющих и вычисление нового цвета я отдал функции RGBDiff, которая делает тоже, что и RGB(A1-(A1-B1)/h*i, A2-(A2-B2)/h*i, A3-(A3-B3)/h*i) из приведенного Вами примера. Только вместо A1-A3, B1-B3 ей требуется передавать два параметра TColor.
Удачи!
Приложение:
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва WWW:Хлама много, по сути ничего... ---- Ответ отправлен: 18.07.2007, 18:34 Оценка за ответ: 5 Комментарий оценки: Первый цвет работает не корректно (в отличии от второго) пример: заменяю clBlue на clRed получаю clBlack. В остальном все отлично, большое спасибо не могли бы вы прокомментировать
функцию RGBDiff
Отвечает: Маренич Владимир
Здравствуйте, Левадный Тимур Русланович!
Попробуйте поменять формулу:
RGB(A1-(A1-B1)*i div h, A2-(A2-B2)*i div h, A3-(A3-B3)*i div h)
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 19.07.2007, 11:38
Вопрос № 95.628
У меня тут такой вопрос, у меня вот тут прога и с помощью компонентов RobioButton, в ней меняется интерфейс проги,как можно зделать чтобы при закрытии проги сохранялись параметры нажатых кнопок RadioButton и CheckBox?
Отвечает: UnRe@l
Здравствуйте, Хакеров Алексей Андреевич!
Самое простое – использовать INI-файл:
Unit IniFiles;
...
var
IniFile: TIniFile;
...
IniFile:=TIniFile.Create('myinifile.ini');
...
IniFile.WriteBool('CheckBox','1',True);
Считываем ReadBool.
--------- Cogito, ergo sum (c) R. Descartes (1596-1650)
Ответ отправил: UnRe@l (статус: 3-ий класс)
Ответ отправлен: 19.07.2007, 06:28
Отвечает: Omickron
Здравствуйте, Хакеров Алексей Андреевич!
Для того, чтобы запомнить параметры, нужно сохранить их в файл. Лучше всего для настроек использовать Ini файлы. (класс TIniFile)
Подключаем модуль TIniFiles, создаём объект класса и методами ReadBool, WriteBool считываем и записываем логические переменные (отмечены ли CheckBox и RadioButton)
Примеры работы с классом TIniFiles можно посмотреть в Help к Delphi.
Ответ отправил: Omickron (статус: 3-ий класс)
Ответ отправлен: 19.07.2007, 07:00
Отвечает: Yumark
Здравствуйте, Хакеров Алексей Андреевич!
Как вариант, можно сохранять в реестре:
http://delphiworld.narod.ru/base/reg_use.html
или
http://delphiworld.narod.ru/base/access_to_registry_with_api.html
Ответ отправил: Yumark (статус: 1-ый класс)
Ответ отправлен: 19.07.2007, 08:57
Отвечает: Stari
Здравствуйте, Хакеров Алексей Андреевич!
один из вариантов сохранять в ini файлы все параметры которые могут быть изменены.
Ответ отправил: Stari (статус: 1-ый класс)
Ответ отправлен: 19.07.2007, 11:49
Отвечает: Виктор Пырлик
Здравствуйте, Хакеров Алексей Андреевич!
Рабочий код в приложении.
Приложение:
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 19.07.2007, 12:08
Отвечает: Denisss Здравствуйте, Хакеров Алексей Андреевич!
См. пример в приложении.
Небольшие разъяснения к примеру:
Поскольку я не любитель сохранения настроек в реестре (считаю это дурным тоном), то в примере все сохраняется в Ini файл.
FormCreate и FormClose вызывают две объявленные в классе функции: LoadSettings и SaveSettings, соответственно. Как можно догадаться, одна функция сохраняет настройки, другая загружает.
Данные функции сохраняют установки всех TRadioButton и TCheckBox, расположенных на форме Form1 в файл. При этом, форму можно переименовывать, можно добавлять и удалять элементы и т.д. Код будет работать в любом случае. Но если Вы удалите какой-либо элемент с формы, то желательно удалить его и из файла настроек.
Отвечает: Coupler
Здравствуйте, Домикальчиков Владимир Юрьевич!
Для этого можно, например, загрузить страницу какого-нибудь сайта, в которой показываются курсы валют, и получить их со страницы. В примере информация берется с http://www.rbc.ru/ (документ http://www.rbc.ru/out/802.csv) - в нем отображаются курсы валют и множество другой информации. Пример взят с http://www.delphisources.ru/ скачать пример (13кб). Также пример лежит в приложении.
Приложение:
Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 19.07.2007, 08:52 Оценка за ответ: 5 Комментарий оценки: Спасибо огромное! Попробовал - работает!
Вопрос № 95.654
Здравстуйте, Эксперты!
Пишу базу данных.
С помощью закладки ВDE, пытаюсь отобразить на компоненте DBGrid данные из таблицы Акцесса, посредством TTable (закладка BDE).
Для базы данных я задал алиас в в BDE Administrator - MyBase.
Так вот:
Связь задана с помощью TDATASourse, а при задании имени таблицы в TTable у меня программа требует имя пользователя и пароль.
PS База данных локальная, и никаким паролем не запаролена!!!
Вопрос:
В чем тут дело и можно ли снять эти ограничения?
Отвечает: Виктор Пырлик
Здравствуйте, Герасименко Алексей Анатольевич!
Пользователь (логин) для Access: Admin
Пароль : пустой
Для корректной работы с MS Access рекомендуется использовать компоненты со страницы ADO.
1. BDE использует доступ ODBC
2. Работа через BDE ограничивает распространение приложения дополнительной
привязкой к собственным драйверам (надо будет инсталлировать и BDE)
3. Нет ни какой уверенности, что «завтра» ваше приложение посредством BDE
сможет работать с базой новой Access (новыми драйверами). Borland уже давно
не сопровождает BDE.
4. При использовании ADO появляются дополнительные возможности при работе с
данными, и облегчается программирование.
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 19.07.2007, 12:42
Отвечает: Delph
Здравствуйте, Герасименко Алексей Анатольевич!
В компоненте Database (аналог в ADO: ADOConnection) есть свойство LoginPrompt. Его нужно выставить в False. Это подавит форму, запрашивающую логин и пароль. Свойство LoginPrompt я привык сбрасывать в испекторе объектов - так проще всего.
Ответ отправил: Delph (статус: 4-ый класс)
Ответ отправлен: 19.07.2007, 13:01
Отвечает: Djec
Здравствуйте, Герасименко Алексей Анатольевич!
Для работы с Аксесс необходимо работать с компонентами из закладки ADO. Сначала ставим TADOConection. Теперь настройте соединение с сервером, которое должно быть прописано в свойстве ConnectionString. Для этого надо дважды щёлкнуть по строке ConnectionString. В открывшемся окне выберите Use Connection String и нажмите кнопку Build. На закладке Provider выберите Microsoft Jet 4.0 OLE DB Provider. После этого нажмите кнопку Next. В появившемся окне надо ввести имя (если надо то и путь) базы данных в строку «Select
or enter a database name». Если база данных будет располагаться в той же директории, что и запускной файл, то путь указывать не надо.
Поле User name можно оставить по умолчанию, если не заданно иное при создании базы;
Поле Password – если база имеет пароль, то его необходимо указать;
Поле Blank password – если пароль не нужен, то здесь желательно поставить галочку;
Поле Allow saving password. Если здесь поставить галочку, то пароль может быть сохранён.
Для проверки соединения нажмите кнопку Test Connection. Если удачно, появится сообщение Test connection succeeded. Теперь закрывайте.
В свойствах компонента ADOConnection отключите свойство LoginPrompt, выставив его в False. Это нужно для того, чтобы при каждом обращении к базе не выскакивало окно ввода пароля. А теперь выставте свойство Connected в True, чтобы произошло соединение с базой.
Далее выбирайте из закладки ADO компоненту TADOTABLE. В свойстве ConnectionString указываем наше ADOConnection1. Active выставите в True.
А с компонентой TDATASourse стандартные операции.
--------- Никогда не сдавайся, даже если боишься проиграть
Ответ отправил: Djec (статус: 2-ой класс)
Ответ отправлен: 19.07.2007, 13:21