Вопросы раздела Delphi
Как строить отношения с мужчиной книги - консультация
Как строить отношения с мужчиной книги — консультация
Как правильно строить отношения с мужчиной за 40 — консультация
Правильное отношение к мужчине — консультация
Как начать отношения с мужчиной — консультация
Психология отношения с мужчиной — консультация
Тест почему не складываются отношения с мужчинами — консультация
Каким образом (или с помощью каких средств) в окне диалога для выбора файлов интерфейса shellapi указать маску отображаемых в диалоге файлов
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; Masiv = array [1..4,1..3] of real; Masiv_i = array [1..4,1..3] of integer; var Form1: TForm1; Xo,Yo,Mx,My:integer; Matrica_fig:masiv; Komp_kor_Mf:
Что-то типа такого, только без использования Microsoft Office
Удаленная компьютерная помощь через TeamViewer ОНЛАЙН!
☑ Окажу помощь в настройке, администрировании, установке любых программ, драйверов и операционных систем семейства Windows, Mac OS
☑ Помощь в установке и активации редких, узкоспециализированных программ
◄►◄► Избавлю от вирусов, баннеров и прочей гадости. ◄►◄►
☑ Помогу разобраться с железом.
☑ Работа с фото и видео.
◄►◄► Удаленная компьютерная помощь ◄►◄►
☑ Готов решить множество ваших проблем с ПК посредством удаленного управления.
Русификация, навигация для автомобилей из США удаленно!
Добрый вечер! Пытаюсь сделать фильтрацию в dbgrid, ввод в edit. Просто запрос на кнопку Query1.Filter :='Фамилия='+QuotedStr(Edit1.Text); Query1.Filtered :=True; При этом ошибка: Query1:Field 'Ф' not found. Не могу понять почему так? Объясните пожалуйста.
Люди помогите. Делаю браузер, когда делаю так что-бы браузер пошёл настраницу назад он выдаёт, что неопознаная ошибка.
Код такой:
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, Grids, StdCtrls, ExtCtrls, ComCtrls;
- type
- TForm1 = class(TForm)
- Panel1: TPanel;
- StringGrid1: TStringGrid;
- Button1: TButton;
- Label7: TLabel;
- Panel2: TPanel;
- Label1: TLabel;
- StringGrid2: TStringGrid;
- StringGrid3: TStringGrid;
- Label2: TLabel;
- StringGrid4: TStringGrid;
- Label3: TLabel;
- Label4: TLabel;
- Label5: TLabel;
- Label6: TLabel;
- StatusBar1: TStatusBar;
- procedure FormCreate(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- type
- TMArray =array [0..3] of real;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- StringGrid1.Cells[0,0]:='';
- StringGrid1.Cells[1,0]:='';
- StringGrid1.Cells[2,0]:='';
- StringGrid1.Cells[3,0]:='';
- StringGrid1.Cells[0,1]:='';
- StringGrid1.Cells[1,1]:='';
- StringGrid1.Cells[2,1]:='';
- StringGrid1.Cells[3,1]:='';
- StringGrid1.Cells[0,2]:='';
- StringGrid1.Cells[1,2]:='';
- StringGrid1.Cells[2,2]:='';
- StringGrid1.Cells[3,2]:='';
- end;
- function podstanov (mas1,mas2,mas3:TMArray):real;
- begin
- Result:= mas1[0]*mas2[1]*mas3[2]+mas2[0]*mas3[1]*mas1[2]+mas1[1]*mas2[2]*mas3[0]-
- mas3[0]*mas2[1]*mas1[2]-mas2[0]*mas1[1]*mas3[2]-mas3[1]*mas2[2]*mas1[0];
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- var mas1,mas2,mas3:TMArray;
- i,j:integer; x1,x2,x3:real;
- Delta,Delta1,Delta2,Delta3:real;
- begin
- for i:=0 to StringGrid1.
ColCount-1 do - begin
- mas1[i]:=StrToFloat(StringGrid1.cells[i,0]);
- mas2[i]:=StrToFloat(StringGrid1.Cells[i,1]);
- mas3[i]:=StrToFloat(StringGrid1.Cells[i,2]);
- end;
- Delta:=podstanov(mas1,mas2,mas3); //дельта
- for j:=0 to StringGrid1.RowCount do
- begin
- StringGrid2.Cells[0,j]:=StringGrid1.Cells[3,j];
- StringGrid2.Cells[1,j]:=StringGrid1.Cells[1,j];
- StringGrid2.Cells[2,j]:=StringGrid1.Cells[2,j];
- StringGrid2.Cells[3,j]:='0';
- end;
- for i:=0 to StringGrid2.ColCount-1 do
- begin
- mas1[i]:=StrToFloat(StringGrid2.cells[i,0]);
- mas2[i]:=StrToFloat(StringGrid2.Cells[i,1]);
- mas3[i]:=StrToFloat(StringGrid2.Cells[i,2]);
- end;
- Delta1:=podstanov(mas1,mas2,mas3); //дельта
- for j:=0 to StringGrid3.RowCount do
- begin
- StringGrid3.Cells[0,j]:=StringGrid1.Cells[0,j];
- StringGrid3.Cells[1,j]:=StringGrid1.Cells[3,j];
- StringGrid3.Cells[2,j]:=StringGrid1.Cells[2,j];
- StringGrid3.Cells[3,j]:='0';
- end;
- for i:=0 to StringGrid3.ColCount-1 do
- begin
- mas1[i]:=StrToFloat(StringGrid3.cells[i,0]);
- mas2[i]:=StrToFloat(StringGrid3.Cells[i,1]);
- mas3[i]:=StrToFloat(StringGrid3.Cells[i,2]);
- end;
- Delta2:=podstanov(mas1,mas2,mas3);
- for j:=0 to StringGrid4.RowCount do
- begin
- StringGrid4.Cells[0,j]:=StringGrid1.Cells[0,j];
- StringGrid4.Cells[1,j]:=StringGrid1.Cells[1,j];
- StringGrid4.Cells[2,j]:=StringGrid1.Cells[3,j];
- StringGrid4.Cells[3,j]:='0';
- end;
- for i:=0 to StringGrid3.ColCount-1 do
- begin
- mas1[i]:=StrToFloat(StringGrid4.cells[i,0]);
- mas2[i]:=StrToFloat(StringGrid4.Cells[i,1]);
- mas3[i]:=StrToFloat(StringGrid4.Cells[i,2]);
- end;
- Delta3:=podstanov(mas1,mas2,mas3);
- Label1.Caption:=FloatToStr(Delta1)+#13+'--------------'+#13+FloatToStr(Delta);
- Label2.Caption:=FloatToStr(Delta2)+#13+'--------------'+#13+FloatToStr(Delta);
- Label3.Caption:=FloatToStr(Delta3)+#13+'--------------'+#13+FloatToStr(Delta);
- end;
- end.
Мне нужно чтобы при запуске программы переименовался файл который будет открыт. Т.е я открываю к примеру фильм, и в это время он переименовывает его в другое имя которое я задал. Или можно по возможности сделать чтоб при открытие не изменялся, а уже после закрытия переименовался. Заранее спасибо
Здравствуйте, у меня возник такой вопрос, есть PageCntrol, как сделать чтобы при нажатие на кнопку сдвигалась предыдущая страница и появлялась другая. Какой код нужно прописать на кнопке чтоб такое реализовать?
Разработать программу ввода и вывода коэффициентов уравнения для определения корней полинома пятой степени, представленных в одной строке
Возник такой вопрос, мне нужно чтобы при нажатии на кнопку выводился текст с картинками, но через какой компонент это сделать? Код приветствуется!)
Здравствуйте! Я пользователь одной из онлайн букмекерских контор! Я Зарегестрировался на сайте (букмекерской конторы) более 2 месяцев. Пользуясь этим сайтом я выиграл более 500грн (начиная играть положил в свой кабинет на данном сайте около 30грн), дважды выводил деньги и при очередной попытки вывести деньги, мне пришол отказ, в виде сообщения в котором написано — что для того чтобы в дальнейшем
Начал делать свой браузер, основные компоненты установил такие как назад, вперед, стоп, обновить, но я хочу усовершенствовать его, сделать более функциональным, добавить различные действия, ну и как то внешне оформить бы надо, Подскажите что можно добавить, и каким образом, т.к я в програмирование не силен… Буду очень признателен)))) И еще у меня почему то когда заходишь на какую либодругую страницу
кто мне поможет сделать задание в Delphi 7 в консольном приложении. до завтра срочно
здравствуйте, как в Memo вывести текст в ряд, тобишь что бы оно не перескакивало на следущий столбик
begin
if i>255 then Result:=255
else if i<0 then Result:=0
else Result:=i;
end;
procedure Contrast(Bitmap: TBitmap; Value: Integer);
var
p0:pbytearray;
rg,gg,bg,r,g,b,x,y: Integer;
begin
for y:=0 to Bitmap.Height-1 do
begin
p0:=Bitmap.scanline[y];
for x:=0 to Bitmap.Width-1 do
begin
r:=p0[x*3];
g:=p0[x*3+1];
b:=p0[x*3+2];
rg:=(Abs(127-r)*Value)div 255;
gg:=(Abs(127-g)*Value)div 255;
bg:=(Abs(127-b)*Value)div 255;
if r>127 then r:=r+rg else r:=r-rg;
if g>127 then g:=g+gg else g:=g-gg;
if b>127 then b:=b+bg else b:=b-bg;
p0[x*3]:=IntToByte®;
p0[x*3+1]:=IntToByte(g);
p0[x*3+2]:=IntToByte(b);
end;
end;
end;
Я делаю простой калькулятор в программе Делфи и чтоб он считал я создал кнопку 2 editа и label, на кнопке я прописал код: label6.Caption:=IntoStr(StrToInt(edit1.Text)+ StrToInt(edit2.Text)); И он прекрасно считает, но вместо кнопки я поставил картинку и прописал точно такой же код но программа почему то не работает, разве на картинке это функция не работает?
procedure SetMeritHelper(rootkey: Integer; clsid: String; b1, b2, b3, b4: Byte);
var
filterdata: AnsiString;
begin
if RegQueryBinaryValue(rootkey,
'CLSID\{083863F1-70DE-11d0-BD40-00A0C911CE86}\Instance\' + clsid,
'FilterData', filterdata) then begin
if Length(filterdata) < 16 then begin
Log('Invalid filterdata for ' + clsid);
exit;
end;
filterdata[5] := Chr(b1);
filterdata[6] := Chr(b2);
filterdata[7] := Chr(b3);
filterdata[8] := Chr(b4);
RegWriteBinaryValue(rootkey, CLSID_ACTIVEMOVIE_INSTANCE + clsid,
'FilterData', filterdata);
end;
end;
end;
procedure SetMerit32(clsid: String; b1, b2, b3, b4: Byte);
begin
SetMeritHelper(HKCR32, clsid, b1, b2, b3, b4);
end;
procedure SetMeritUnlikely32(clsid: String);
begin
SetMerit32(clsid, 0, 0, 64, 0);
end;
Проблема в том что я никак не могу заставить его работать, а работать он должен в установщике на Inno setup.
С помощью гугла и моих поверхностных знаний удалось понять что RegQueryBinaryValue в коде это у нас чтение данных ключа. В скобках по ходу самим надо прописывать вместо rootkey — HKEY_CLASSES_ROOT ну и т.д. Потом небольшое условие, если содержание параметра меньше 16, то ничего не делаем, как я понял. Дальше идёт перечисление целевых байт, ну а потом судя по всему, операция записи наших данных RegWriteBinaryValue. Вот только не понятно, что здесь делает название другого раздела CLSID_ACTIVEMOVIE_INSTANCE — думаю, оно попало сюда по ошибке. Просто человек который дал мне этот код, забыл поправить, и здесь должен быть тот же путь что и в 1-й операции. Ведь дальше идёт описание самой процедуры, ну и в конце нужно ввести свой приоритет SetMerit32(clsid, 0, 0, 64, 0) и всё.
Вообщем, не смотря на все мои усилия код так и не заработал, надеюсь местные знатоки по синтаксису Delphi подскажут что тут и как. Заранее всем благодарен.
Вот Файл целевого ключа реестра.
Заменил чёрный картридж в принтере. Видит, что есть краска, но чёрным цветом ни капли не печатает. Печатает лишь цветными.
Помогите разобраться как правильно подключить библиотеку.
1.Циклические вычислительные процессы
Цель работы: научиться создавать простейшие проекты, реализующие алгоритмы циклических вычислительных процессов, с использованием операторов цикла и стандартных компонентов.
Постановка задачи:
1 Вычислить таблицу значений функции y=f(x) и построить график этой функции для значений аргумента X, изменяющегося в интервале от Хнач до Хкон с шагом dX .
Значения Хнач, Хкон, dX вводить с экрана. Таблицу и график выводить на экран.
Ход работы:
1 Создать выходную форму, поместив на нее нужные компоненты.
Изменить свойства компонент через IO.
2 Набрать приложение. Для того чтобы система создала заготовку обработчика события, сделать двойной щелчок накнопке.
2.Записать проект в созданную специально дл этого проекта папку.
3.Запустить программу (Run./Run). Если ошибок нет, появляется выходная форма.
4.Проверить результаты.
вид функции x.начальн x.конечное dX
y=2x/(3+sin(x/3)) 1.7 6.3 0.5
Рекомендации к выполнению работы
1 Таблицу и график выводить на форму в одном проекте ( но можно сделать 2 разных проекта) .
1.Удобно значения Хнач, Хкон, dX вводить, задавая свойство TEXT компонента EDIT.
2.Таблицу Х У можно выводить через компонент– многострочный редактор MEMO, добавляя строку свойству Lines методом Add, например, Memo1.Lines.Add(‘Ответ’). В строке многострочного редактора Memo1 появится слово «Ответ» и добавится строка, поэтому следующий вывод будет выполняться с новой строки. Заголовок таблицы можно сделать при конструировании: Memo1\ Lines…или в программе.
3. График выводить, используя компонент Chart со страницы Additional.
Chart1\ Add \ выбрать вид графика \ Ok \ Close
9 Функцию вычислять через подпрограммуFunction
10 Если на
Настройка :
PageControl1 \ правой кнопкой вызываем меню \ NewPage… и т.д. Создаем выходной блокнот с нужным количеством страниц. На каждую страницу помещаем компоненты. На саму программу не влияет то, что компоненты находятся на разных страницах, но удобство просмотра большого объема информации очевидны.
10 При выводе на график точки разрыва (т.е. аргумент вне ОДЗ) просто пропускать.
Программа dupeGuru2.9.0 также позволяет пользователю настраивать алгоритмы сравнения файлов для более точного поиска, например: типы сканирования, жескость фильтра, заданному слову, разброс похожих слов и другие. При поиске программа выводит список найденных файлов с указанием путей, размеров и процентом совпадения.
Основные возможности:
• Быстрый поиск дубликатов, в том числе среди файлов разных форматов;
• настройка программы под конкретные нужды;
• Безопасность — ни один из нужных файлов не будет удален;
• Функция удаления пустых папок;
• Перемещение и копирование дубликатов, удаление плохих копий.
В этой версии исправлены некоторые ошибки:
• Значительно улучшена скорость и использование памяти при сканировании больших массивов.
• Добавлена поддержка drag& dropв панели папок. )
• Исправлена ошибка, приводившая dupeGuruк некорректному отчету при перемещении файлов во время сканирования.
• Прекращена поддержка MacOSX10.4 (Tiger)
DupeGuru — небольшая быстрая утилита для поиска дубликатов файлов на компьютере. Интерфейс программы предельно прост: нужно только выбрать область поиска дубликатов (Мои докуметы, все диски, отдельный каталог/типы файлов). Программа просканирует диск и выдаст результат в виде наглядной таблицы. dupeGuruможет просмотреть имена файлов и их содержание. Просмотр имени файла показывает четкий алгоритм соответствия, который может найти двойные имена файла даже когда они не точно похожи.
Алгоритм:
Производим рекурсивный поиск файлов, по каждому файлу создаем метку = "<имя_файла>:<размер>:<дата>", и сохраняем в бинарное дерево поиска, если такой метки нет, создаем новую, иначе найдены совпадения.
Реализация
Все операции необходимо выполнять в потоке.
type
TFileSearchThread = class(TThread)
private
_TickCountIntervalBeforeRefresh: integer;
locProgressMax: integer;
locProgressPosition: integer;
locSearchFilesDone: integer;
locCurrentFile: string;
procedure SetName;
procedure SetStatus;
procedure ThreadDone;
procedure FindFiles(
paramFolder,
paramMask: string;
const paramLevel: integer);
function GetFilesCount(
paramFolder: string;
const paramLevel :integer): integer;
procedure AddToTree(
var paramNode: TSearchTreeNode;
const paramPath: string;
const paramHash: string;
const FileSize: integer
);
protected
procedure Execute; override;
public
SearchFolder: string;
Mask: string;
FilesTree: TSearchTreeNode;
end;
{$IFDEF MSWINDOWS}
type
TThreadNameInfo = record
FType: LongWord; // must be 0x1000
FName: PChar; // pointer to name (in user address space)
FThreadID: LongWord; // thread ID (-1 indicates caller thread)
FFlags: LongWord; // reserved for future use, must be zero
end;
{$ENDIF}
{ TFileSearchThread }
procedure TFileSearchThread.SetName;
{$IFDEF MSWINDOWS}
var
ThreadNameInfo: TThreadNameInfo;
{$ENDIF}
begin
{$IFDEF MSWINDOWS}
ThreadNameInfo.FType := $1000;
ThreadNameInfo.FName := 'FileSearchThread';
ThreadNameInfo.FThreadID := $FFFFFFFF;
ThreadNameInfo.FFlags := 0;
try
RaiseException( $406D1388, 0, sizeof(ThreadNameInfo) div sizeof(LongWord), @ThreadNameInfo );
except
end;
{$ENDIF}
end;
procedure TFileSearchThread.Execute;
begin
SetName;
// Calculate less 2 sec
_TickCountIntervalBeforeRefresh := GetTickCount()+2000;
locProgressMax := 0;
locProgressPosition := 0;
GetFilesCount(SearchFolder, 0);
// Start search
_TickCountIntervalBeforeRefresh := 0;
findfiles(SearchFolder, Mask, 0);
// finish
synchronize(ThreadDone);
end;
Рекурсивный поиск файлов
procedure TFileSearchThread.FindFiles(
paramFolder,
paramMask: string;
const paramLevel: integer);
var
searchrec: tsearchrec;
findresult: integer;
hash: string;
begin
if self.Terminated then
exit;
if paramLevel <= uConst.cLevelCountForCalculateFilesCount then
Inc(locProgressPosition);
if locProgressPosition > locProgressMax then
locProgressMax := locProgressPosition;
// Update status
if GetTickCount() > _TickCountIntervalBeforeRefresh then
begin
//300 — update thread info interval in msec :
_TickCountIntervalBeforeRefresh := GetTickCount() + 300; //
locCurrentFile := paramFolder;
synchronize(SetStatus);
end;
paramFolder:=includetrailingbackslash(paramFolder);
findresult:=findfirst(paramFolder+paramMask, faanyfile, searchrec);
try
while findresult = 0 do
begin
if (searchrec.attr and fadirectory)<>0 then
begin
if (searchrec.name<>'.') and (searchrec.name<>'..') then
findfiles(paramFolder+searchrec.name, paramMask, paramLevel+1);
end
else
begin
hash := searchrec.name;
hash := hash + ':S'+IntToStr(searchrec.Size);
hash := hash + ':T'+IntToStr(searchrec.Time);
AddToTree(FilesTree,paramFolder+searchrec.name,hash,searchrec.Size);
end;
findresult:=findnext(searchrec);
end;
finally
findclose(searchrec);
end;
end;
Сохраняем метку файла в бинарное дерево поиска
procedure TFileSearchThread.AddToTree(
var paramNode: TSearchTreeNode;
const paramPath: string;
const paramHash: string;
const FileSize: integer
);
begin
if not Assigned(paramNode) then
begin
paramNode := TSearchTreeNode.Create(nil);
paramNode.Hash := paramHash;
paramNode.Files := paramPath+'|'+IntToStr(FileSize);
paramNode.FilesCount := 1;
end
else
begin
if paramHash > paramNode.Hash then
AddToTree(paramNode.HiNode,paramPath,paramHash,FileSize)
else
if paramHash < paramNode.Hash then
AddToTree(paramNode.LowNode,paramPath,paramHash,FileSize)
else
begin
paramNode.FilesCount := paramNode.FilesCount + 1;
paramNode.Files := paramNode.Files + #13#10+ paramPath+'|'+IntToStr(FileSize);
// count of entry duplicate files
if paramNode.FilesCount = 2 then
Inc(locSearchFilesDone);
end;
end;
end;
Предварительное определение общего количества файлов
Для удобства UI, а именно для отображения ProgressBar, нам необходимо приблизительно оценить общее количество файлов, для этого мы рекурсивно подсчитываем число каталогов с вложенностью 2-3(задаем параметром в конфигурационном фале).
functionTFileSearchThread.GetFilesCount(
paramFolder: string;
const paramLevel :integer): integer;
var
searchrec: tsearchrec;
findresult: integer;
hash: string;
begin
// Get folder count in hi 5 levels
if GetTickCount() > _TickCountIntervalBeforeRefresh then
exit;
if paramLevel > uConst.cLevelCountForCalculateFilesCount then
exit;
if self.Terminated then
exit;
Inc(locProgressMax);
paramFolder := includetrailingbackslash(paramFolder);
findresult:=findfirst(paramFolder+'*.*', faanyfile, searchrec);
try
while findresult = 0 do
begin
if (searchrec.attr and fadirectory)<>0 then
begin
if (searchrec.name<>'.') and (searchrec.name<>'..') then
GetFilesCount(paramFolder+searchrec.
end;
findresult:=findnext(searchrec);
end;
finally
findclose(searchrec);
end;
end;
Здравствуйте, как мне через компонент MathComp сделать так, чтобы график можно было рисовать уже в самой програме?