22nd
Окт

Рассылка. Выпуск 81

(читать всё…)

21st

Установить фоновый рисунок на рабочий стол?

первый способ:

(читать всё…)

20th
Окт

Как сохранить файл из StringGrid без табуляций и переходов?

каждую ячейку нужно поочередно записать в файл через ; не переходя на следующую строку.

(читать всё…)

19th
Окт

Как найти в тексте символ новой строки?

У нас есть текст в txt.
У текста есть разделение на абзацы путем новой строки.
Как найти эти символы новой строки?

(читать всё…)

19th

Переход по компонентам используя кнопку tab?

На форме размещены компоненты, переходить по ним можно при помощи клавиши Tab. Переход по элементам осуществляется в зависимости от порядка их размещения на форме. Можно где-нибудь этот порядок подправить? Допустим, при нажатии Tab, при фокусе Edit1, курсор перешел бы на Edit2?

(читать всё…)

18th
Окт

ListBox как проводник

Добрый день.
У меня сейчас имеется ComboBox в котором идет выбор локального диска, после того как я выбрал диск в ListBox появляется все папки и файлы на этом диске. Вопрос: как сделать переход по директориям в ListBox , чтобы можно было ходить по папкам как в проводнике)

(читать всё…)

18th

Как перемешать значения в listbox?

(читать всё…)

18th

Фотографии рабочих мест

(читать всё…)

18th

Перепись населения

Не могу понять, может кто сможет объяснить. В чем смысл переписи населения? На это дело уходят миллиарды денег, а ради чего?
Собирают некую БД о населении (причем те данные, что человек сам о себе укажет, т.е. национальность может быть хоть эльф). Но зачем делать эту ненужную работу, если баз, в которых есть инфа обо всех и так целая куча:

(читать всё…)

18th

Рассылка. Выпуск 80.

(читать всё…)

17th
Окт

Как проверить вводимое значение.

Написал программу, в которой обрабатываются числа (тип Integer), необходимо проверить вводимые значения на соответствие типу Integer, если вводимые значения- не принадлежат типу Integer,тто вывести сообщение о некорректных вводимых данных..как это сделать?

(читать всё…)

15th

Заблокировать рабочее место.

Думаю, что для некоторых программа будет архиважной, поэтому решил создать:

(читать всё…)

15th

Конвертирование tif в bmp

(читать всё…)

13th
Окт

NewTheme Messenger

(читать всё…)

12th
Окт

О сайте нашего Журнала [ПРОграммист] …

Осмелюсь завести отдельную тему о жизни сайта нашего с Вами журнала [ПРОграммист].

(читать всё…)

11th
Окт

Рисование многоугольника мышкой

Доброго дня!

Вот всё пытаюсь сделать рисование многоугольника мышкой. Моя логика такая:

static int n=0;

POINT pt[10];

1. Нажатием левой клавиши запоминаю первую точку

Код:

case WM_LBUTTONDOWN:
	x=LOWORD(lParam); //coordinates 1
           y=HIWORD(lParam);
	break;

2. Отжатием – запоминаю вторую и последующие

Код:

case WM_LBUTTONUP:
        hdc=GetDC(hWnd);
        x2=LOWORD(lParam); //coordinates 2
        y2=HIWORD(lParam);
        SelectObject(hdc, hPen);
        SelectObject(hdc1, hPen);
        if (n==0) {pt[0].x=x; pt[0].y=y;}
        n++;
        pt[n].x=x2;
        pt[n].y=y2;
        ReleaseDC (hWnd,hdc);
        break;

3. Нажатием правой клавиши рисую получившуюся фигуру:

Код:

case WM_RBUTTONDOWN:
	hdc=GetDC(hWnd);
           SelectObject(hdc, hPen);
	SelectObject(hdc1, hPen);
	Polygon(hdc,pt,n);
	Polygon(hdc1,pt,n);
	n=0;
	ReleaseDC (hWnd,hdc);
           break;

Но не работает. Что я делаю не так?

ТС сам нашел решение:

case WM_LBUTTONDOWN:
x=LOWORD(lParam); //coordinates 1
y=HIWORD(lParam);
if (n==0) {
x0=x;
y0=y;
}
break;

case WM_LBUTTONUP:
hdc=GetDC(hWnd);

x2=LOWORD(lParam); //coordinates 2
y2=HIWORD(lParam);
SelectObject(hdc, hPen);
SelectObject(hdc1, hPen);
//choise++;
//if (choise==6) {choise=1;}
choise=5;
switch (choise) {
case 1:
Rectangle (hdc,x,y, x2,y2);
Rectangle (hdc1,x,y, x2,y2);
break;

case 2:
Ellipse (hdc,x,y, x2,y2);
Ellipse (hdc1,x,y, x2,y2);
break;

case 3:
MoveToEx(hdc,x,y,0);
LineTo (hdc,x2,y2);
MoveToEx(hdc1,x,y,0);
LineTo (hdc1,x2,y2);
break;

case 4:
case 5:
if (n==0)
{
pt[0].x=x;
pt[0].y=y;
pt[1].x=x2;
pt[1].y=y2;
n=1;

MoveToEx(hdc,x,y,0);
LineTo (hdc,x2,y2);
MoveToEx(hdc1,x,y,0);
LineTo (hdc1,x2,y2);
}
else
{
MoveToEx(hdc,x0,y0,0);
LineTo (hdc,x2,y2);
MoveToEx(hdc1,x0,y0,0);
LineTo (hdc1,x2,y2);

pt[n].x=x2;
pt[n].y=y2;
}
n++;
x0=x2; y0=y2; //захоўваем пачатак наступнага адрэзка

break;

}
ReleaseDC (hWnd,hdc);
break;

case WM_RBUTTONDOWN:
hdc=GetDC(hWnd);
SelectObject(hdc, hPen2);
SelectObject(hdc1, hPen2);

if (choise==4) {
Polygon(hdc,pt,n);
Polygon(hdc1,pt,n);
}
if (choise==5) {
Polyline(hdc,pt,n);
Polyline(hdc1,pt,n);
}

ReleaseDC (hWnd,hdc);
break;

Тема на форуме.

8th
Окт

Рассылка. Выпуск 79

redaktor От ведущего.

Здравствуйте, уважаемые читатели рассылки. Подошел к концу первый месяц осени, не знаю как для вас, а для меня он пролетел незаметно. Общение на нашем форуме не прекращается ни на минуту, чему пример сегодняшний выпуск рассылки. Читайте в этом номере обзор новых тем форума за неделю.

(читать всё…)

7th
Окт

Javascript который рисует таблицу безопасных цветов

В таблицы могут быть использованы только цвета со значениями 0, 51, 102, 153, 204, 255 в каждой из позиции кода цвета RGB, т.е. R может быть 0, 51, 102, 153, 204, 255; G – 0, 51, 102, 153, 204, 255; B – 0, 51, 102, 153, 204, 255.

Итого 216 вариантов. Делаете цикл, перебираете все возможные цвета и выводите их как ячейки таблицы.

<html>
<head>
<title>Таблица безопасных цветов</title>
<script>
function getTrueTable(contID)
{
var r = 0;
var g = 0;
var b = 0;
var table = “<table width=’100%’>”;

while (r <= 255)
{
g = 0;
while (g <= 255)
{
table += “<tr>”;
b = 0;
while (b <= 255)
{
table += “<td style=’width:88px; height:31px; background-color: rgb(”+r+“,”+g+“,”+b+“);color: rgb(”+(255-r)+“,”+(255-g)+“,”+(255-b)+“)’>RGB(”+r+“,”+g+“,”+b+“)                                     
      </td>”
;
b += 51;
}
table += “</tr>”;
g += 51;
}
r += 51;
}
table += “</table>”;
document.getElementById(contID).innerHTML = table;
}
</script>
</head>
<body id=“truetable”>
<input type=“button” onclick=“getTrueTable(’truetable’);” value=“Хочешь таблицу правильных цветов? Тыч суда!”>
</body>
</html>

Тема на форуме

6th
Окт

Как скопировать файлы?

Есть Listq : TStringList; где находится список файлов в виде
‘D:\Program Files\Acro\Writer\README.HTM’
и необходимо эти файлы скопировать в другой каталог. Подскажите как такое возможно осуществить? При этом необходимо автоматически переименовывать имена одинаковых файлов.

function WindowsCopyFile(FromFile, ToDir : string) : boolean;
var F : TShFileOpStruct;i:integer;
begin
   F.Wnd := 0;
   F.wFunc := FO_COPY;
   for i:=0 to Listq.count-1 do />      FromFile:=FromFile+Listq[i]+#0;
   FromFile:=FromFile+#0#0;
   F.pFrom:=pchar(FromFile);
   ToDir:=ToDir+#0;
   F.pTo:=pchar(ToDir);
   F.fFlags := FOF_RENAMEONCOLLISION;
   result:=ShFileOperation style="color: #66cc66">(F) = 0;
end;

Тема на форуме

6th

Как расчитать время между нажатием и отпусканием кнопки мыши?

var  time1, time2, time3: TTime; //Глобальные

procedure TForm1.RzBitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  time1 := Time;
end;

procedure TForm1.RzBitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var h, m, s, ms: Word;
  st: string;
  d: Double;
begin                           
  time2 := Time;
  time3 := time2 – time1;
  DecodeTime(time3, h, m, s, ms) pan>;
  st := IntToStr(s) + ‘.’ + IntToStr(ms);
  d := RoundTo(StrToFloat(st), -1);
  label1.Caption := FloatToStr(d);
end;

Тема на форуме

5th
Окт

Как получить классы всех дочерних окон формы?

function EnumClasses(HWND:THandle;lParam:Integer):BOOL;stdcall;
var s:string;
begin
   SetLength(s,256);
   SetLength(s,GetClassName(HWND,s[1], style="color: #cc66cc">256));
   Form1.Memo1.Lines.Add(s);
   Result:=true;
end;

на кнопке пишем
   EnumChildWindows(<хендл окна, у которого перечисляем>,@EnumClasses,0);

Тема на форуме

4th
Окт

Изменение курсора

Пишите процедуру типа

procedure TForm1.LC(p: integer; s: PAnsiChar);
begin
  Screen.Cursors[p] := LoadCursor(HInstance,s);
  Image1.Cursor:=TCursor(p);
end;

Вместо Image1 Ваш элемент,для кот. должен появляться Ваш курсор.
Пример использования:

LC(2,’oval’);

‘oval’ – имя курсора из файла *.res.
В коде формы подключите Ваш res-файл,например, {$R MyFile.RES}
Файл с ресурсами создаёте заранее,например в Image Editor (стандартный Борландовский: Меню Tool->Image Editor) – он будет содержать Ваши курсоры.

Если что-то не получится во вложении пример программы и скриншот. Писал 1,5-2 года назад,как курсовую. Тогда ещё много чего не знал(да и сейчас не всё знаю:),так что код очень корявый,но рабочий. Перед запуском программы скопируйте папку “КРАБ” на диск С.
КР(NEW)!!!.zip

Тема на форуме

3rd
Окт

Gecko. Как его использовать в дельфи?

Установка, полезные ссылки, различные решения проблем. Читать тему на форуме

3rd

Организация цикла While в ассемблере

Можно макроинструкциями:

.WHILE TRUE
invoke GetMessage,ADDR msg,0,0,0
.BREAK .IF (!eax)
invoke TranslateMessage,ADDR msg
invoke DispatchMessage,ADDR msg
.ENDW

Это пример из МАСМ.

Тема на форуме

3rd

Cравнить две строки. asm

Нужно сделать по аналогии с strcmp (на Си). Если первая строка меньше второй вывести -1, если равны 0, иначе 1.

.686P
.model flat
.data
string1 db ‘мама мыла раму’,0
string2 db ‘мама не мыла раму’,0
.code
start:     mov esi,offset string1
         mov ecx,offset string2
         call strcmp
         mov esi,offset string2
         mov ecx,offset string1
         call strcmp
         mov esi,offset string1
         mov ecx,offset string1
strcmp proc
@@:     lodsd
         cmp al,[ecx]
         jnz short a3
         or al,al
         jz short @f
         cmp ah,[ecx+1]
         jnz short a3
         or ah, ah
         jz short @f
         shr eax,10h
         cmp al,[ecx+2]
         jnz short a3
         or al,al
         jz short @f
         cmp ah,[ecx+3]
         jnz short a3
         add ecx,4
         or ah,ah
         jnz short @b
@@:     xor eax,eax
         retn
a3:     sbb eax,eax
         or eax,1
         retn
strcmp endp
end start

Тема на форуме

3rd

Действия над числами в строке

вот такой вроде не сложный но в тоже время интересный вопрос, как сделать действия над числами если они все в одной строке и разделены знаками, например:
S:=’1+2+2-3+5-1=’;

function Calculate(SMyExpression: string; digits: Byte): string;
var
   z: Char;
   ipos: Integer;

   function StrToReal(chaine: string): Real;
   var
     r: Real;
     Pos: Integer;
   begin
     Val(chaine, r, Pos);
     if Pos > 0 then Val(Copy(chaine, 1, Pos1), r, Pos);
     Result := r;
   end;

   function RealToStr(inreal: Extended; digits: Byte): string;
   var
     S: string;
   begin
     Str(inreal:0 : 0, S);
     realToStr := S;   
   end;   

   procedure NextChar;   
   var 
     s: string;   
   begin
     if ipos > Length(SMyExpression) then 
     begin 
       z := #9;   
       Exit;
     end 
     else
     begin
       s := Copy(SMyExpression, ipos, 1);
       z := s[1];   
       Inc(ipos);   
     end;   
     if z = ‘ ‘ then nextchar;
   end;   

   function Expression: Real;
   var
     w: Real;

     function Factor: Real;
     var 
       ws: string;
     begin
       Nextchar;   
       if z in [‘0′..‘9′] then
       begin 
         ws := ;
         repeat 
           ws := ws + z;
           nextchar   
         until not (z in [‘0′..‘9′, ‘.’]);
         Factor := StrToReal(ws);
       end 
       else if z = ‘(’ then 
       begin
         Factor := Expression;
         nextchar   
       end
       else if z = ‘+’ then Factor := +Factor   
       else if Z = ‘-’ then Factor := -Factor;   
     end;
   
     function Term: Real;
     var 
       W: Real;
     begin
       W := Factor;
       while Z in [‘*’, ‘/’] do 
         if z = ‘*’ then w := w * Factor
       else
         w := w / Factor;
       Term := w;   
     end;
   begin 
     w := term;
     while z in [‘+’, ‘-’] do
       if z = ‘+’ then w := w + term
     else 
       w := w – term;
     Expression := w;
   end;
begin
   ipos   := 1;
   Result := RealToStr(Expression, digits);
end;

вызов:

s:=‘1+2*5+3+(5*2+7)’;
s:=calculate(s,0);

Тема на форуме



Облако меток

реестр конкурс мультимедиа Топик-обзор bmp таблица Edit массив form игры MySQL регулярные выражения word функция строки delphibasics папка assembler алгоритмы си шарп ListBox база данных файл функции компоненты поиск сеть ассемблер Image canvas html indy советы memo StringGrid программы форма php Файлы графика Win Api office макросы мысли C/C++ excel winapi интернет журнал ПРОграммист Delphi