Последние записи
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
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);
3rd
Как получить список отмеченных Checkbox’ов
Как получить список отмеченных Checkbox’ов. Нужно, чтобы список отображался в Memo или ListBox.
i: integer;
begin
for i := 0 to Form1.ControlCount – 1 do
begin
if (Form1.Controls[i] is TCheckBox) then
if (Form1.Controls[i] as TCheckBox).Checked then
Memo1.Lines.Add((Form1.Controls[i] as TCheckBox).Caption
1;
end;
end
3rd
Вставить иконку в ячейку DBGridEh
Надо показать иконку в ячейке вместе с текстом. То есть слева в ячейке иконка, а за ней текст.
begin
if (DataCol = 0) then
begin
Icon := TIcon.Create;
Icon.LoadFromFile(‘user1_16.ico’);
cc := DBGridEh1.Canvas;
cc.FillRect(rect);
cc.Draw(Rect.Left, Rect.Top, Icon);
cc.TextOut(Rect.Left + 20, Rect.Top, DBGridEh1.DataSource.DataSet.Fields[0].AsString);
Icon.Free;
end;
1st
Окт
Загрузка BMP в Simple Graph и сохранение в BMP формат
function TSimpleGraph.GetAsMetafile: TMetafile;
var
I: Integer;
GraphRect: TRect;
MetaCanvas: TMetafileCanvas;
begin
GraphRect := GraphBounds;
Result := TMetafile.Create;
Result.Width := GraphRect.Right - GraphRect.Left;
Result.Height := GraphRect.Bottom - GraphRect.Top;
MetaCanvas := TMetafileCanvas.Create(Result, 0);
try
SetViewportOrgEx(MetaCanvas.Handle, -GraphRect.Left, -GraphRect.Top, nil);
for I := 0 to Objects.Count - 1 do
with Objects do if IsLink then Draw(MetaCanvas);
for I := 0 to Objects.Count - 1 do
with Objects do if not IsLink then Draw(MetaCanvas);
finally
MetaCanvas.Free;
end;
end;
procedure TSimpleGraph.SaveAsMetafile(const Filename: String);
var
Metafile: TMetafile;
begin
Metafile := GetAsMetafile;
try
Metafile.SaveToFile(Filename);
finally
Metafile.Free;
end;
end;
У SG есть метод SaveAsMetafile – в метафайл.
Вроде как можно свой метод добавить с TBitmap.
А вообще в BMP сохранять нерационально – картинка может несколько
мегабайт весить, – сжатия,то нет никакого. ИМХО,лучше что-то типа JPEG
применять (подключаете стандартный модуль JPEG).
30th
Сен
x64 ассемблер и алгоритмы
Вот решил наконец попробовать x64 попрограмить. Вроде все круто – 64-битные регистры + 8 дополнительных регистров. Итого теперь наконец стало в общей суме 16 базовых регистров. Ну что я рассказываю, каждый наверняка введение краткое читал.
У меня другой вопрос: вот кто-то ощутил уже на себе преимущества 64-битных регистров против 32-битных? Ну там не знаю, мож у вас MD5 началось в 2 раза быстрее считаться, или там crc32 в четыре раза? Или не знаю… Как кто юзает ассемблер для x64? Есть ли какие-то реальные примеры известных алгоритмов, заоптимизированных для x64 на ассемблере? Покажите пожалуйста..
PS: Что-то погуглил на тему примеров сорцов в гугле – непонятная тишина… Все на шарпах и явах чтоле пишут? )
конкретно алгоритмов заоптимизированных для x64 нет. В основном алгоритмы пишут на С/С++ а они уже в свою очередь компилируются под нужную платформу.
главное преимущество x64 систем – фактически нет ограничения на размер используемой виртуальной памяти. В 32-битных версиях Windows максимальный размер виртуальной памяти для одного приложения 2 ГБ, в 64-битных версиях 8 ТБ. 2 ГБ памяти слишком мало для серверных приложений.
Для обычных пользователей 64-битные системы почти не дают преимуществ, а для серверов 64-битные системы довольно-таки нужная весчь.
есть ещё куча преимуществ и недостатков но приводить их всех лень
27th
Сен
Как средствами Delphi можно создать гитарный тюнер?
.Такой вопрос…как средствами Delphi можно создать гитарный тюнер? Сигнал от электрогитары идет на линейный вход, а в программе отображается нота и отклонение от нее.. Как это реализовано?
спектроанализатор, а дальше сравнение по частоте с таблицей нот (картинка ниже для пианино, для гитары распределение гляньте в >>> вики)
Дополнительная информация в блоге.
Ознакомиться функционалом библиотеки BASS >>>см. № 3 нашего журнала (”Создание спектрограммы в Delphi”)
27th
Вывод стилем Xor
Двойной вывод этим стилем приводит к тому, что после первого – выводится изображение, а после второго – производится восстановление предыдущего состояния, т.е. выполняется стирание.
21st
Сен
Как из базы ABS достать файлы?
У меня есть база ABS. В неё вложено два файла mapinfo (это не важно могли быть и обычные картинки).
Как я могу достать их?
_SERGEYX_:
В каком поле хранятся файлы?
Если тип этого поля BLOB или GRAPHIC, то в AbsDb Manager достаточно два раза кликнуть по ячейке в этом поле и откроется окошко сохранения и
загрузки данных (в/из файла). Кстати, к AbsDb Manager есть исходники, где можно увидеть код сохранения данных в файл. Для графики вот такой:
var
FileStream: TFileStream;
BlobStream: TStream;
begin
if (sdGraphic.Execute) then
begin
FileStream := TFileStream.Create(sdGraphic.FileName,fmCreate);
BlobStream := CurrentTable.CreateBlobStream(CurrentGrid.SelectedField,bmRead);
FileStream.CopyFrom(BlobStream,BlobStream.Size);
BlobStream.Free;
FileStream.Free;
end;
end;
Для BLOB:
var
FileStream: TFileStream;
BlobStream: TStream;
begin
if (sdBlob.Execute) then
begin
FileStream := TFileStream.Create(sdBlob.FileName,fmCreate);
BlobStream := CurrentTable.CreateBlobStream(CurrentGrid.SelectedField,bmRead);
FileStream.CopyFrom(BlobStream,BlobStream.Size);
BlobStream.Free;
FileStream.Free;
end;
end;
21st
Может ли функция в delphi возвращать массив?
TArInt=array of integer;
function FuncName(Param:integer):TArInt;
Облако меток
css реестр ассемблер timer SaveToFile ShellExecute программы массив советы word MySQL SQL ListView pos random компоненты дата LoadFromFile form база данных сеть html php RichEdit indy строки Win Api tstringlist Image мысли макросы Edit ListBox office C/C++ memo графика StringGrid canvas поиск файл Pascal форма Файлы интернет Microsoft Office Excel excel winapi журнал ПРОграммист DelphiКупить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)