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

» Вопросы по Delphi 2

Автор: reenoip
Дата сообщения: 02.06.2006 19:13
Kostya, не обращай внимания, тут все такие. Одни - очень злые, другие - совсем умные, такие уж программисты сейчас пошли
Попробуй взять книжки отсюда: http://podgoretsky.com/ftp/Docs/ и отсюда: http://c-books.info/books/load.php?ty=delphi
Если есть возможность (и широкий канал) - лей всё, что встретишь, не глядя. На винте разберёшь потом, что к чему.
Если сомневаешься в содержании файла PDF, то в ней удобно искать прогой Foxit PDF Reader, она, в отличие от многих, и в кириллице шарит, и вообще шустрая )))

И юзай Яндекс, юзай, в нём вся сила. Просто тупо забивай в строку поиска ключевые слова, и ищи среди получившегося хлама своё, нужное тебе.
Ты ведь прав, что спрашиваешь (на то он и форум!), но и местные мозги тоже по-своему правы (ты для них - не единственный чайник, я ещё в комплекте ).
Автор: Kostya
Дата сообщения: 03.06.2006 11:53
А если несложно подскажите что нужно изменить чтобы запретить растягивание окна. Я нашол только где можно задать строгие размеры.
Автор: ranc
Дата сообщения: 03.06.2006 12:10
Kostya
у формы BorderStyle:= bsSingle
Автор: OdesitVadim
Дата сообщения: 03.06.2006 12:14
Kostya
поиграйся со свойством borderStyle формы. bsSingle - и уже нельзя будет растягивать.
Но тут незадачка, а развернуть в полный экран можно. Непорядок. Но это лечиться снятием галочки в свойстве BorderIcons biMaximaze
Автор: Kostya
Дата сообщения: 03.06.2006 15:29
Возникла проблема. Сделал процедуру. При попытке запуска программы выдает ошибку.
Помечает красным слово exit; и выдает такой сообщение
Statement expected, but expression of type 'TMenuItem' found

Подскажите вкаком направлении капать для убирания ее.
Автор: kkRiz
Дата сообщения: 03.06.2006 15:36

Цитата:
Подскажите вкаком направлении капать для убирания ее.

Смотреть на строку выше, может забыл точку с запятой. В любом случае - ошибка синтаксиса.
Автор: Kostya
Дата сообщения: 03.06.2006 15:41
Или подскажите как можно сосчитать доход за месяц.

К примеру есть таблица с полнями date - дата в формате 01.06.2006, prid - прибыли

Общую прибыль я считаю так.
sum := 0.0;
for i:=1 to Form1.ADOTable1.RecordCount do
begin
Form1.ADOTable1.RecNo := i;
sum := sum + StrToFloat(Form1.ADOTable1['Prib']);
end;
StatusBar1.Panels[2].Text := 'Общий итог: '+FloatToStr(sum);

А как сосчитать за текущий месяц?
Автор: OdesitVadim
Дата сообщения: 03.06.2006 16:09
Kostya
А не проще select запрос сделать? Там можно и сумму задать. что то типа
select sum(prib) from table where ((date>=#1/1/2006#) and (date<#2/1/2006#))
Автор: Kostya
Дата сообщения: 03.06.2006 16:32
Мне ошибка вылетае когда запрос делаю
Could not convert variant of type (Null) into (String)
Автор: OdesitVadim
Дата сообщения: 03.06.2006 17:17
Kostya
Ну значит строки нет. Надо проверочку на Null делать типа

Код:
if rs.field['bla']<>nil then
res:=rs.field['bla']
else res:='';
Автор: STEEL
Дата сообщения: 03.06.2006 19:22
Выложите плиз исходничок готовой программки по работе с компортом? Имеется у меня класс, брал на sources.ru в разделе Delphi, не догоняю как непрерывно слушать порт. Есть функция ReadString, которая возвращает то что лежит в буфере порта, если воткнуть её в цикл, приложение вешается. На Си под юниксом я создавал отдельный поток (нить) и непрерывный цикл. Нужно постоянно слушать порт, к которому подключен сканер штрихкодов, он плюётся обычным набором цифр и латиницей.
Автор: nehalem
Дата сообщения: 03.06.2006 20:27
Мне программно надо узнать включен (checked) ли CheckBox у другой программы, зная хэндл этого чек бокса. Можно ли ??
Автор: Butcher
Дата сообщения: 03.06.2006 21:43
STEEL
поставь в цикле Sleep() с каким-нибудь промежутком времени, хотя бы 100 мс - уже вешаться не будет.
Автор: Kostya
Дата сообщения: 03.06.2006 21:48
А как выбрать в запросе в этом все значения даты. К примеру *.06.2006 как? Какую маску надо указывать?
Автор: kkRiz
Дата сообщения: 03.06.2006 22:02

Цитата:
Есть функция ReadString, которая возвращает то что лежит в буфере порта, если воткнуть её в цикл, приложение вешается.

1. Кто мешает сделать тред и в нём читать с ком порта в цикле? Дельфя и винда в этом отличий никаких не имеют.
2. Нужно воткнуть application.processmessages в цикл.
Автор: EZH
Дата сообщения: 03.06.2006 22:04
Kostya
Ну так задай последнее чило предыдущего месяца и первое число след месяца. Или что-то типа MONTH(Date)=6 AND YEAR(Date)=2006.
Автор: STEEL
Дата сообщения: 04.06.2006 10:42
Всё равно приложение подвисает, что не так

Код:
procedure TMyThread.Execute;
begin
while not Terminated do
Synchronize(DoWork);
end;

procedure TMyThread.DoWork;
var i: Integer; buf: String;
begin
for i := 0 to 10000 do
begin
Application.ProcessMessages;
Form1.cp.ReadString(buf);
Form1.SystemEvent(buf);
Sleep(1000);
end;
Автор: kkRiz
Дата сообщения: 04.06.2006 10:59
Хм, во-первых, processmessages нужен только если выполнение в основном цикле программы, как я понимаю. Т.к. когда тред, то обработкой сообщений программе будет заниматься основной поток приложения. Почему зависает когда идёт обработка в треде - понимаю с трудом, тем более если засунут слип. МОжет быть попробовать поиграть с приоритетом треда? И убрать слип нафиг. И ещё глянуть в саму реализацию Readstring. Может там затык.
Автор: FireZone
Дата сообщения: 04.06.2006 14:06
kkRiz

Цитата:
Почему зависает когда идёт обработка в треде - понимаю с трудом, тем более если засунут слип.

Потому что DoWork выполняется в основном потоке, поскольку вызывается через Synchronize.

Добавлено:
STEEL
Если хочешь использовать компонент для работы с портом, то забей на потоки. Самый простой выход в твоём случае (т.е., с компонентом) - использовать таймер с интервалом эдак 100 мс. В обработчике OnTimer и делай этот самый
Код: cp.ReadString(buf);
Автор: EVD
Дата сообщения: 05.06.2006 09:19
STEEL
У тебя код выполняется в главном потоке, так что тебе поток и не нужен.

Если надо с потоком, то надо что-то типа этого:


Код:
type
TMyThread = class
private
buf: string;
ComPort: TComPortComponent;
............................................
............................................
end;

procedure TMyThread.Execute;
begin
while not Terminated do
ComPort.ReadString(buf);
Synchronize(DoWork);
end;

procedure TMyThread.DoWork;
begin
Form1.SystemEvent(buf);
end;


Автор: ArtemiyUO
Дата сообщения: 05.06.2006 14:08
Ребята, посоветуйте пожалуйста компоненты для доступа к secure ftp connection из Делфи, максимально надежные и простые.
Автор: RostY
Дата сообщения: 05.06.2006 16:56
ArtemiyUO
INDY не пробовал ?
Автор: ArtemiyUO
Дата сообщения: 05.06.2006 17:05
А каким компонентом иди воспользоваться. У меня вроде 10 стоит.
Автор: EVD
Дата сообщения: 05.06.2006 17:14
ArtemiyUO
Есть еще библиотека Synapse. Она не такая навороченная, как Indy, но зато проще
Автор: reenoip
Дата сообщения: 05.06.2006 17:47
cxGrid позволяет мультиселект строк. Как можно скопом удалить выбранные юзером (ctrl + click) строки, причём удалить не из грида, а из ADOTable? Грид после удаления просто обновлю, это же не суть...
Автор: Butcher
Дата сообщения: 05.06.2006 17:50
ArtemiyUO
TIdFtp попробуй
Автор: reenoip
Дата сообщения: 05.06.2006 17:54
Оп-па, супер!

cxGridDBTableView1.DataController.DeleteSelection;

Обожаю cxGrid )))
Автор: Butcher
Дата сообщения: 05.06.2006 17:54
reenoip
Как раз для тебя примерчик:
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
if DBGrid1.SelectedRows.Count>0 then
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
Delete;
end;
end;
Автор: reenoip
Дата сообщения: 05.06.2006 19:48
Butcher, спасибо
Но cxGridDBTableView1.DataController.DeleteSelection; действительно здорово работает
Автор: George_Lucky
Дата сообщения: 06.06.2006 08:39
Вопрос, может не совсем корректный
Стоит ли перейти с D7 на D2006? Если кто переводил свои проекты, подскажите каких проблем стоит ождать?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Событие STFilter(DBGridEh) ???


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