Последние записи
- Пример заполнения динамического массива
- Исходник нахождения обратной матрицы
- Нужен ли сайт разработчику?
- Обсуждаем технологию I2P
- Как запустить программу указанную в Edit.Text
- Скачать файл с использованием потока
- Поиск слова в Memo
- Распаковщик формата .img из GTA San Andreas
- Подсчет количества повторяющихся букв в файле
- Простейший скрипт загрузки картинки с помощью php
21st
Окт
Как можно реализовать алгоритм сортировки массива по возрастанию методом сортировки выбором?
Вот что-то вроде такого:
20th
Окт
Как сохранить файл из StringGrid без табуляций и переходов?
каждую ячейку нужно поочередно записать в файл через ; не переходя на следующую строку.
19th
Окт
Как найти в тексте символ новой строки?
У нас есть текст в txt.
У текста есть разделение на абзацы путем новой строки.
Как найти эти символы новой строки?
19th
Переход по компонентам используя кнопку tab?
На форме размещены компоненты, переходить по ним можно при помощи клавиши Tab. Переход по элементам осуществляется в зависимости от порядка их размещения на форме. Можно где-нибудь этот порядок подправить? Допустим, при нажатии Tab, при фокусе Edit1, курсор перешел бы на Edit2?
18th
Окт
ListBox как проводник
Добрый день.
У меня сейчас имеется ComboBox в котором идет выбор локального диска, после того как я выбрал диск в ListBox появляется все папки и файлы на этом диске. Вопрос: как сделать переход по директориям в ListBox , чтобы можно было ходить по папкам как в проводнике)
18th
Перепись населения
Не могу понять, может кто сможет объяснить. В чем смысл переписи населения? На это дело уходят миллиарды денег, а ради чего?
Собирают некую БД о населении (причем те данные, что человек сам о себе укажет, т.е. национальность может быть хоть эльф). Но зачем делать эту ненужную работу, если баз, в которых есть инфа обо всех и так целая куча:
17th
Окт
Как проверить вводимое значение.
Написал программу, в которой обрабатываются числа (тип Integer), необходимо проверить вводимые значения на соответствие типу Integer, если вводимые значения- не принадлежат типу Integer,тто вывести сообщение о некорректных вводимых данных..как это сделать?
15th
Заблокировать рабочее место.
Думаю, что для некоторых программа будет архиважной, поэтому решил создать:
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
От ведущего.
Здравствуйте, уважаемые читатели рассылки. Подошел к концу первый месяц осени, не знаю как для вас, а для меня он пролетел незаметно. Общение на нашем форуме не прекращается ни на минуту, чему пример сегодняшний выпуск рассылки. Читайте в этом номере обзор новых тем форума за неделю.
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 вариантов. Делаете цикл, перебираете все возможные цвета и выводите их как ячейки таблицы.
<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’
и необходимо эти файлы скопировать в другой каталог. Подскажите как такое возможно осуществить? При этом необходимо автоматически переименовывать имена одинаковых файлов.
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
Как расчитать время между нажатием и отпусканием кнопки мыши?
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
Окт
Как получить классы всех дочерних окон формы?
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
Окт
Изменение курсора
Пишите процедуру типа
begin
Screen.Cursors[p] := LoadCursor(HInstance,s);
Image1.Cursor:=TCursor(p);
end;
Вместо Image1 Ваш элемент,для кот. должен появляться Ваш курсор.
Пример использования:
‘oval’ – имя курсора из файла *.res.
В коде формы подключите Ваш res-файл,например, {$R MyFile.RES}
Файл с ресурсами создаёте заранее,например в Image Editor (стандартный Борландовский: Меню Tool->Image Editor) – он будет содержать Ваши курсоры.
Если что-то не получится во вложении пример программы и скриншот. Писал 1,5-2 года назад,как курсовую. Тогда ещё много чего не знал(да и сейчас не всё знаю:),так что код очень корявый,но рабочий. Перед запуском программы скопируйте папку “КРАБ” на диск С.
КР(NEW)!!!.zip
3rd
Окт
Gecko. Как его использовать в дельфи?
Установка, полезные ссылки, различные решения проблем. Читать тему на форуме
3rd
Организация цикла While в ассемблере
Можно макроинструкциями:
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.
.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=’;
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, Pos – 1), 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:=calculate(s,0);

