Member
Статус: Не в сети Регистрация: 31.01.2004 Откуда: moskow
Привет, кто может сказать как посчитать сколько памяти займет цикл
Напр:
Код:
repeat r :=power(-1,i); r1:=(2*i)+1; arco:=arco+(r)/(r1); ... ... r :=power(-1,(i+7)); r1:=(2*(i+7))+1; arco:=arco+(r)/(r1); inc(i,8); until i>=24000000;
т. е. на сколько можно разворачивать цикл, чтобы он поместился в кэш процессора L1?
Может есть такая прога или методика подсчета?
Member
Статус: Не в сети Регистрация: 02.03.2003 Откуда: Pink Bird M.I.
Товарищи, подскажите, пожалуйста, способ выводить таблицу(просто текстовую) с разноцветным текстом в разных строках. Обычные компоненты, работающие со списками или таблицами такое не могут AFAIK. Друг посоветовал сделать через вывод сгенеренного html, но способ, конечно не очень удачный(писать на диск/читать). Добавлено спустя 21 минуту, 58 секунд Забыл сказать, ещё нужно выбирать определеную строчку, что в окне броузера сделать очень сложно, если возможно.
_________________ Everything counts in large amounts.
Member
Статус: Не в сети Регистрация: 04.01.2004 Откуда: 31
Kola Автор: Alex Schlecht
1. StringGrid
=============
Для раскрашивания будем использовать событие "OnDrawCell". Следующий код показывает, как сделать в Grid красный бэкраунд. Бэкграунд второй колонки будет зелёным.
Const //сдесь определяем Ваш цвет. Так же можно использовать //цвета по умолчанию. clPaleGreen = TColor($CCFFCC); clPaleRed = TColor($CCCCFF);
begin
//Если ячейка получает фокус, то нам надо закрасить её другими цветами if (gdFocused in State) then begin StringGrid1.Canvas.Brush.Color := clBlack; StringGrid1.Canvas.Font.Color := clWhite; end else //Если же ячейка теряет фокус, то закрашиваем её красным и зелёным
if ACol = 2 //Вторая колонка будет зелёной , другие - ячейки красными then StringGrid1.Canvas.Brush.color := clPaleGreen else StringGrid1.canvas.brush.Color := clPaleRed;
//Теперь закрасим ячейки, но только, если ячейка не Title- Row/Column //Естевственно это завит от того, есть у Вас title-Row/Columns или нет.
If (ACol > 0) and (ARow>0) then begin //Закрашиваем бэкграунд StringGrid1.canvas.fillRect(Rect);
//Закрашиваем текст (Text). Также здесь можно добавить выравнивание и т.д.. StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]); end; end;
Member
Статус: Не в сети Регистрация: 02.03.2005 Откуда: Владивосток
Кто работал в связке Delphi+MySql 5 подскажите: Юзаю Delphi 7+ZeosLib+MySql5, проблема в следующем - периодически при выполнении запроса(SELECT ...) вываливается ошибка "Lost connection during query", делаеш запрос занова - все работает. Прочитал в инете что это может связано с большими объемами информации, читаемой или записываемой в базу - увеличил переменную "Max. packet size" до 16M - не помогает. Да кстати пробовал и на Win платформе, и на Unix - результат один и тот же. Версия мускула - 5.0.18
Member
Статус: Не в сети Регистрация: 08.01.2003 Откуда: Россия, Иркутск
Подскажите, плз,
вообщем летает шарик по paintbox и отскакивает от стенок, как сделать чтобы при этом окно не подвисало??
Код:
var frm: Tfrm; x,y:real; implementation
{$R *.dfm}
procedure Tfrm.FormPaint(Sender: TObject); var vx,vy,we:integer; t,h:real; begin vx:=2; vy:=3; x:=100; y:=50; t:=0; h:=0.01; we:=10; paintbox.Parent.DoubleBuffered:=true; paintbox.canvas.Brush.Color:=clwhite; paintbox.Canvas.Ellipse(-1000,-1000,1000,1000); repeat x:=x+vx*t; y:=y+vy*t; if (x<=0) or (x>=paintbox.Width-we) then vx:=-vx; if (y<=0) or (y>=paintbox.Height-we) then vy:=-vy; t:=t*h; paintbox.canvas.Brush.Color:=clwhite; paintbox.Canvas.Ellipse(-1000,-1000,1000,1000); paintbox.canvas.Brush.Color:=clred; paintbox.Canvas.Ellipse(round(x),round(y),round(x+we),round(y+we)); sleep(50); t:=t+1; until t=1000; end;
end.
_________________ Если ты не смотрел Evangelion - ты не жил
Ричи Блэкмор - Бог!
Junior
Статус: Не в сети Регистрация: 19.09.2005 Откуда: Подольск
Варианты:
1. Сделать задний буфер на базе TBitmap, равному по размеру с PaintBox, отрисовки делать в нем в потоке. после until отрисовывать буфер на экране через метод Synchronize.
paintbox.Parent.DoubleBuffered - это не прокатывает.
2. Вставить Application.ProcessMessages где-то между repeat и until.
Я бы использовал первый способ.
_________________ Linux - must die.
Долгих лет тебе, Билли !
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
Вопрос как сделать запуск процедуры на определенное время. Чтоб допустим она отработала 2сек и потом, не важно от того выполнилась или нет, ее грохать?
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
defecator Ладно тогда вопрос поставим по другомку, наверное так правильнее будет, как мне поставить тайм аут для доступа к серверу. Преобразуется DNS в IP . Так вот некоторые их них могут думать очень долго, или вообще висеть, что мне ненадо. Как от этого избавится??
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
defecator вод код функци
Цитата:
function HostToIP(name: string; Ip: string):boolean; var wsdata : TWSAData; hostName : array [0..255] of char; hostEnt : PHostEnt; addr : PChar; begin WSAStartup ($0101, wsdata); try application.ProcessMessages; gethostname (hostName, sizeof (hostName)); StrPCopy(hostName, name); hostEnt := gethostbyname (hostName); if Assigned (hostEnt) then if Assigned (hostEnt^.h_addr_list) then begin addr := hostEnt^.h_addr_list^; if Assigned (addr) then begin IP := Format ('%d.%d.%d.%d', [byte (addr [0]), byte (addr [1]), byte (addr [2]), byte (addr [3])]); Result:= True; end else Result := False; end else Result := False else begin Result := False; end; finally WSACleanup; end end;
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Member
Статус: Не в сети Регистрация: 17.09.2003 Откуда: UA г.Донецк
defecator Есть и такое Просто вопрос как дождаться завершения поиска DNS ??? В примерах просто по событию отслеживают. Как мне в куске кода дождатся запершения поиска???
Код:
{Запрос ip по DNS} WSocket1.DnsLookup(Reversip+DNSBL[i]);
... какой параметр проверять на то что поиск закончен??
{считывание первого адреса} AnsBL:=WSocket1.DnsResultList[1];
или лепить отдельно процедуру по типу
WSocket1DnsLookupDone( Error: Word); в которой и снимать результат?
_________________ Debian Lenny/Sid
при установке линукс не пострадал ни один пингвин, полегли все дятлы
Junior
Статус: Не в сети Регистрация: 19.09.2005 Откуда: Подольск
Да, так оно лучше будет.
Хотя я делал бы поток.
Т.е. запустил поток, он пусть там висит, сколько нужно,
потом, если не выполнился за указанное время - Terminate.
Если выполнился - вернет результат. Добавлено спустя 38 минут, 25 секунд Кстати, с ICS я исключительно через потоки работаю.
_________________ Linux - must die.
Долгих лет тебе, Билли !
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения