Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi

Автор: STEEL
Дата сообщения: 03.03.2005 23:24
Необходимо сделать следующее действие

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
X := (((Y*Z) +100)/S)*100;
Edit1.Text := IntToStr(X);
end;
Автор: ShIvADeSt
Дата сообщения: 04.03.2005 02:12

Цитата:
Также, какой тип лучше использовать, чтобы посчитать всё это и как поотом вывести? В те же самые Edit-ы. Желательно использовать Integer, даже если числа получаются нецелочисленные, всё равно нужны только округлённые!

тебе надо что то вроде этого
var
X,Y:Real;
if Edit1.Text<>'' then begin
X:=(S : ((Y*Z)+100))*100;
Edit1.Text:=Round(X);
end;
if Edit2.Text<>'' then begin
Y=((S-X) : Z) : (X : 100);
Edit2.Text:=Round(Y);
end;
Вот только я не догнал что ты имел в виду под : и не свосем понял, что тебе надо, поэтому написал как понял. Если поподробнее опишешь проблему, попонятнее и может быть ближе к истине отвечу, а так только способ вывода округленного значения выражения в едит. (кстати можно было сразу выражение считать в Round типа Round(X/100);
Автор: STEEL
Дата сообщения: 04.03.2005 09:35
ShIvADeSt
вот как условия задачи мои звучат:
edit1 (x) вклад
edit2 (y) процент
edit3 (z) срок хранения (г.)
edit4 (s) итоговая сумма

X=(S : ((Y*Z)+100))*100
Y=((S-X) : Z) : (X : 100)
Z=(S-X) : ((X : 100)*Y)
S=X+((X : 100)*Y)*Z

: - это деление...

По этим выражениям рассчитываются все представленные значения. Как я уже говорил - по трем известным вычисляется одна неизвестная. Вклад осуществляется в рублях, обычное число от 1-го и до бесконечности, итоговая сумма то же самое, процент от 1 до 100, срок хранения от 1-го года и до бесконечности, так же срок хранения только в годах, не может быть значений типа 0,8 или 2,4 т.к. в году 12 месяцев, да и лишний головняк никчему.
Автор: STEEL
Дата сообщения: 05.03.2005 00:10
if Edit1.Text<>'' AND Edit2.Text<>'' AND Edit3.Text<>''
then begin Button1.Enabled:=true end;


Operator not applicable to this operand type
В чем дело? И подскажи, куда лучше вставить эту проверку, в какое событие?
Автор: EZH
Дата сообщения: 05.03.2005 00:32
Возьми каждое неравенство в скобки.
Автор: ShIvADeSt
Дата сообщения: 05.03.2005 02:33

Цитата:
edit4 (s) итоговая сумма

Это лучше сделать не едитом а Label, так как она все равно расчитывается через остальные. Делаешь в одном едите процедуру OnKeyPress

Цитата:
if (Edit1.Text<>'') AND (Edit2.Text<>'') AND (Edit3.Text<>'')
then begin Button1.Enabled:=true end;

а у остальных едитов событие OnKeyPress ссылаешь на него.
А при нажатии на кнопку уже делаешь расчет. Хотя можно сделать автоматический расчет нечто типа такого. Все тоже самое только без кнопки

Цитата:
if (Edit1.Text<>'') AND (Edit2.Text<>'') AND (Edit3.Text<>'')
then begin
X=(S : ((Y*Z)+100))*100
Y=((S-X) : Z) : (X : 100)
Z=(S-X) : ((X : 100)*Y)
S=X+((X : 100)*Y)*Z
здесь вывод их куда надо

Вот только странно х зависит от z а z зависит от x. То есть если z вводится тогда ее нельзя делать меткой а тоже едитом, как ты и написал.
Автор: Tropin
Дата сообщения: 05.03.2005 14:10
STEEL
а вычислять нужно только итоговую сумму (тогда вроде как достаточно одной последней формулы) или любую переменную по трем другим?
Автор: 2Polkan
Дата сообщения: 05.03.2005 14:40
Что надо:
Написать прогу на основе сокетов...

Клиент отправляет выбранный текст на сервер... Допустим, "1". Что надо сделать, чтобы сервер ждал этого события? Т.е. ничего не делал, пока не получил "1"? А если получил, выполнить определенное действие...
Автор: OdesitVadim
Дата сообщения: 05.03.2005 15:50
организовать поток. он и будет ждать. Если на делфе, то стоит посмотреть в сторону примера Delphi7\Demos\Indy\IdTCPDemo, там клиент и сервер. (по дефолту эти демки не ставлятся, их нужно качать. в папке Delphi7\Demos\Indy\ есть документик, там сказано откуда)
Автор: MrZeRo
Дата сообщения: 05.03.2005 16:29
2Polkan
Есть пример:
X:\XXX\Borland\Delphi7\Demos\Internet\NetChat
(сетевой чат). Как мне кажется, при минимальных доработках даст нужный результат.
Автор: zorrack
Дата сообщения: 05.03.2005 16:37
2Polkan
Создаешь серверный сокет, слушаешь какой-то порт, accept-ишь клиент-сокет. В клиенти-сокете прописываешь событие OnReceive (как точно в делфи - не знаю).
При срабатывании события - читаешь данные. Если "1" - что-то делаешь
Автор: 2Polkan
Дата сообщения: 05.03.2005 20:09
zorrack
спасибо, попробую...
Автор: valni
Дата сообщения: 05.03.2005 22:25
Подскажите совсем начинающему. Решил занятся програмированием, купил книгу и создал первую программу, верней хотел создать


program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

var X, Y, Z; integer;

begin
readln(X,Y);
Z := X + Y;
writeln(Z);
readln

end.

но в ответ подсвечивается строка var X, Y, Z; integer; с установленным курсором после
X, Y, Z;

понимаю что вопрос через чур наивнный но всё же может кто поможет начать с таких азов. Установленная Delphi Version 7.0 (Build 4.453) и Операционная
система Microsoft Windows XP Professional 5.1.2600 (WinXP Retail)
Пакет обновления ОС Service Pack 1.
Автор: Felix
Дата сообщения: 05.03.2005 22:29

Цитата:
var X, Y, Zне ';', а ':' integer;
,
Код: var X: Integer;
Автор: valni
Дата сообщения: 05.03.2005 23:13
Felix благодарю.

Но только в книге именно так и напечатано, за исключением readln а там Readln и т.д. Книга называется Delphi 7, автор С. Бобровский, стр. 36. Ещё раз спасибо, делов то на пять минут а я пол дня голову ломал.
Автор: Tema
Дата сообщения: 08.03.2005 21:03
Доброе время суток.
Никак не могу найти как сделать заставить мышку программно эмулировать клик.
Скажем формочка с кнопочкой. Кнопочка выделена, нажимаем на ней Enter и там где находится курсор мыши (скажем над другой кнопочкой) мышка должна сэмулировать клик и вторая кнопочка нажмётся как-будто мышью.
Автор: ShIvADeSt
Дата сообщения: 09.03.2005 01:16
Tema
Для начала тебе это надо сделать в своем или чужом приложении? Просто если в своем, то можно сделать достаточно легко.
Автор: Tema
Дата сообщения: 09.03.2005 08:06
ShIvADeSt
Зришь в корень!
Именно в чужом!
Мне нужно нажимать Button1, а мышка должна сэмулировать клик где бы она не находилась - над любым чужим окном.


Добавлено:
Но, кстати, всё равно скажи, пожалуйста, своё предложение как это сделать в своём окне.
Спасибо.
Автор: ShIvADeSt
Дата сообщения: 09.03.2005 08:41
Tema

Цитата:
Мне нужно нажимать Button1, а мышка должна сэмулировать клик где бы она не находилась - над любым чужим окном.

вот кусок

Цитата:

Как то пробегала в эхе такая процедура:
{нажимает кнопку в окне с заданным именем}

Function PressButton(wind_name,button_name:string):boolean;
Var w_handle,b_handle:integer;
begin
w_handle:=FindWindow(nil,pchar(wind_name));
if w_handle=0 then begin result:=false;exit;end;
b_handle:=FindWindowEx(w_handle,0,nil,pchar(button_name));
if b_handle=0 then begin result:=false;exit;end;
SendMessage(b_handle,bm_click,0,0);
result:=true;
end;

в качестве параметра название окна и текст кнопки.
Автор: Tema
Дата сообщения: 09.03.2005 08:44
Ради уточнения:
sendmessage(хендл окна,WM_MBUTTONDOWN,0,0)
У меня всё, видимо, сводится к поиску "хендл окна".
И вопрос можно поставить так:
Как узнать хендл окна над которым курсор висит.
Может я чего-то упустил?

Добавлено:
Имя окна неизвестно, к сожалению...
Каждый раз разное...

Добавлено:
И тыкать мышью не обязательно на кнопку...
Автор: FAngel
Дата сообщения: 09.03.2005 09:11
Tema
Так в примере все есть. Обрати внимание на (wind_name,button_name:string)

Так программа не твоя ?
Узнать совсем просто, любая программа типа Customizer тебе поможет.
Автор: Tema
Дата сообщения: 09.03.2005 09:15
Придумал!
Я не с той стороны к вопросу подошёл просто!
Кому надо ловите:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Pt: TPoint;
begin
Pt.X:=200;
Pt.Y:=200;
Mouse.CursorPos:=Pt;
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0);
end;
Автор: OdesitVadim
Дата сообщения: 09.03.2005 10:54
вопросик как с чужого ListView'a содрать все строки? хендл его я знаю
Автор: deks
Дата сообщения: 09.03.2005 20:20
OdesitVadim
см пример выше про Function PressButton(wind_name,button_name:string):boolean;
нужно пример переделать так, чтобы хэндл получался. А дальше через Win API посылаешь сообщения в ListView для получения от него сипска записей. Записи себе сохраняй.

Сам разберешься? ))
Автор: OdesitVadim
Дата сообщения: 10.03.2005 09:53
deks
саму суть как зделать я понимаю, но какие сообщения нужно слать ListView'у. А с поиском самого ListView у меня нормально, скрыть/показать его я умею
Автор: VitaliM
Дата сообщения: 13.03.2005 06:02
Люди, помогите!
В Delphi 7 подключил хелпы дополнительных компонент, так при кликаньи F1 на компоненте на форме контекстная справка показывается, а при кликаньи F1 на названии класса в редакторе - фига, открывается окно индека. В самом индексе это название есть, только в поле поиска пусто и надо вводить все самому. Со своими родными классами Delphi 7 работает правильно и на форме, и в редакторе. В Delphi 6 с этими же хелпами все работает правильно!???
Что делать?
И кто виноват?
Автор: 2Polkan
Дата сообщения: 16.03.2005 13:16
Помогите, как работать с принтером... Как выводить простой текст я знаю, а как допустим, сделать для него рамочку и сделать курсивом с размером 12?
Автор: OdesitVadim
Дата сообщения: 16.03.2005 13:21
можно обращаться к принтеру как к Canvas'у - рисуеш страничку а потом выводишь. И будет тебе всё, что сможеш нарисовать.
Автор: VitaliM
Дата сообщения: 16.03.2005 15:36
2 All
Ну не игнорируйте мой вопрос! Ведь все работают с компонентами стронних производителей. Поделитесь, как у вас обстоят дела с Help`ом сторонних компонент в Delphi 7. Может я один такой, а может нет. Топик вроде живой. Не молчите!!!
Автор: OdesitVadim
Дата сообщения: 16.03.2005 15:55
VitaliM
в папке делфи есть прога, oh.exe она предназначена для корректировки хелпа. можна попробывать. Во вторых заставь HELP перестроить индексы, мож поможет

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.