Последние записи
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
8th
Июл
TStringGrid проверка вводимых данных в ячейку
Условие:
В ячейках только цифры, поэтому больше одного символа в ячейчке не должно быть.
Stilet:
Я бы написал так:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
with TStringGrid(Sender) do
if not (key in [‘0’..’9′])or(length(Cells[Col,row])=1)
then key:=#0;
end;
8th
В чем разница между CreateThread(); и _beginthreadex(); и что лучше использовать?
pproger:
msdn:
A thread in an executable that calls the C run-time library (CRT) should use the _beginthread and _endthread functions for thread management rather than CreateThread and ExitThread; this requires the use of the multi-threaded version of the CRT. It is safe to call CreateThread and ExitThread from a thread in a DLL that links to the static CRT as long as the thread does not call the DisableThreadLibraryCalls function.кратко-вольный перевод. если используешь многопоточную версию crt, используй _beginthread. иначе возникнут проблемы при использовании глобальных переменных и тп, ибо в первой версии crt и понятия не было о многозадачности. об этом еще рихтер писал
а “ex” – просто более широкий набор параметров, не более
7th
Июл
Мат в комментариях исходников :)
Отдельно заслуживает внимания тема про мат в комментариях. Весело, от души и понятно))
Слышал шутку про то, что если убрать все матерные комментарии из исходников ядра Линукс, свободного места прибавится на пару сотен килобайт. Думал это миф… Для прикола выполнил поиск слова “f*ck” в этих самых исходниках… Нашёл! Нашёл много! Например:
/*
...this function must be called before fucking with memory controller...
*/
А вы материтесь в комментах?
6th
Июл
Оптимизация PHP-скрипта: Что быстрее function или include?
По поводу оптимизации и скорости работы include в сети много материала, а вот по function практически ничего, поэтому возник достаточно простой вопрос: что быстрее выполняется function или include и идентичным содержанием?
5th
Июл
ВидеоПлеер в Delphi
Переопределяем SampleGrabber и получаем каждый кадр в свой буфер, его выводим куда и чем угодно Вам.
type
TArRGBTriple = array[0..0] of TRGBTriple;
PArRGBTriple = ^TArRGBTriple;
function GetPin(pFilter: IBaseFilter; PintDir: TPinDirection): IPin;
procedure RemoveDefault(pGraph: IGraphBuilder; pNULLRenderer, pGrabberBase: IBaseFilter);
implementation
function GetPin(pFilter: IBaseFilter; PintDir: TPinDirection): IPin;
var
bFound: Boolean;
pEnum: IEnumPins;
pPin: IPin;
hr: HRESULT;
PinDirThis: TPinDirection;
begin
Result := NIL;
bFound := False;
hr := pFilter.EnumPins(pEnum);
if Failed(hr) then
Exit;
while (pEnum.Next(1, pPin, NIL) = S_OK) do
begin
pPin.QueryDirection(PinDirThis);
bFound := (PintDir = PinDirThis);
if bFound then
Break;
pPin := NIL;
end;
pEnum := NIL;
if bFound then
Result := pPin;
end;
procedure RemoveDefault(pGraph: IGraphBuilder; pNULLRenderer, pGrabberBase: IBaseFilter);
var
pVidRenderer, pColorConverter: IBaseFilter;
Pin, oPin: IPin;
begin
pGraph.FindFilterByName('Video Renderer', pVidRenderer);
if (pVidRenderer <> NIL) then
begin
Pin := GetPin(pVidRenderer, PINDIR_INPUT);
oPin := NIL;
Pin.ConnectedTo(oPin);
Pin.Disconnect;
oPin.Disconnect;
Pin := NIL;
pGraph.RemoveFilter(pVidRenderer);
pVidRenderer := NIL;
pGraph.FindFilterByName('Color Space Converter', pColorConverter);
if (pColorConverter <> NIL) then
begin
oPin := NIL;
Pin := GetPin(pColorConverter, PINDIR_INPUT);
Pin.ConnectedTo(oPin);
Pin.Disconnect;
oPin.Disconnect;
Pin := NIL;
pGraph.RemoveFilter(pColorConverter);
pColorConverter := NIL;
end;
Pin := GetPin(pGrabberBase, PINDIR_INPUT);
pGraph.Connect(oPin, Pin);
Pin := NIL;
oPin := NIL;
oPin := GetPin(pGrabberBase, PINDIR_OUTPUT);
Pin := GetPin(pNULLRenderer, PINDIR_INPUT);
pGraph.Connect(oPin, Pin);
Pin := NIL;
oPin := NIL;
end;
end;
пример набросок
...
TfrmExample = class(TForm, ISampleGrabberCB)
private
function SampleCB(SampleTime: Double; pSample: IMediaSample): HResult; stdcall;
function BufferCB(SampleTime: Double; pBuffer: PByte; BufferLen: longint): HResult; stdcall;
...
GraphBuilder: IGraphBuilder;
FilterSampleGrabber: IBaseFilter;
SampleGrabber: ISampleGrabber;
MediaControl: IMediaControl;
MediaPosition: IMediaPosition;
NullRenderer: IBaseFilter;
end;
...
function TfrmExample.BufferCB(SampleTime: Double; pBuffer: PByte;
BufferLen: Integer): HResult;
begin
Result := S_OK;
end;
function TfrmExample.SampleCB(SampleTime: Double; pSample: IMediaSample): HResult;
var
BmpHead: PBitmapInfoHeader;
MediaType: TAMMediaType;
DIBSize: Integer;
pBuffer: PByte;
begin
Result := S_OK;
if (pSample.GetSize = 0) then
Exit;
Result := SampleGrabber.GetConnectedMediaType(MediaType);
if Failed(Result) then
Exit;
if IsEqualGUID(MediaType.majortype, MEDIATYPE_Video) then
begin
BmpHead := NIL;
if IsEqualGUID(MediaType.formattype, FORMAT_VideoInfo) then
begin
if (MediaType.cbFormat = SizeOf(TVideoInfoHeader)) then
BmpHead := @(PVideoInfoHeader(MediaType.pbFormat)^.bmiHeader);
end;
if (BmpHead = NIL) then
Exit;
DIBSize := BmpHead^.biSizeImage;
if (DIBSize = 0) then
begin
with BmpHead^ do
DIBSize := 3 * biWidth * biHeight * biPlanes;
BmpHead^.biSizeImage := DIBSize;
end;
pSample.GetPointer(pBuffer);
// вот необходимые данные для работы с растром текущего кадра
// BmpHead^.biWidth, BmpHead^.biHeight, BmpHead^.biWidth * 3, PixelFormat24bppRGB, pBuffer
end;
end;
как запускать Play/Pause/Stop
procedure TfrmExample.Play;
var
MediaType: TAMMediaType;
Result: HRESULT;
begin
GraphBuilder := NIL;
FilterSampleGrabber := NIL;
SampleGrabber := NIL;
MediaControl := NIL;
MediaPosition := NIL;
NullRenderer := NIL;
CoCreateInstance(CLSID_FilterGraph, NIL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, GraphBuilder);
Result := GraphBuilder.RenderFile(PWCHAR(WideString('My Video File')), NIL);
if Failed(Result) then
Exit;
CoCreateInstance(CLSID_SampleGrabber, NIL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, FilterSampleGrabber);
FilterSampleGrabber.QueryInterface(IID_ISampleGrabber, SampleGrabber);
FillChar(MediaType, SizeOf(MediaType), 0);
MediaType.majortype := MEDIATYPE_Video;
MediaType.subtype := MEDIASUBTYPE_RGB24;
SampleGrabber.SetMediaType(MediaType);
SampleGrabber.SetBufferSamples(True);
SampleGrabber.SetOneShot(False);
SampleGrabber.SetCallback(Self, 0);
GraphBuilder.AddFilter(FilterSampleGrabber, 'Sample Grabber');
CoCreateInstance(CLSID_NullRenderer, NIL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, NullRenderer);
GraphBuilder.AddFilter(NullRenderer, 'Null Renderer');
RemoveDefault(GraphBuilder, NullRenderer, FilterSampleGrabber);
GraphBuilder.QueryInterface(IID_IMediaControl, MediaControl);
GraphBuilder.QueryInterface(IID_IMediaPosition, MediaPosition);
MediaPosition.get_Duration(VideoLen);
MediaControl.Run;
end;
procedure TfrmExample.Pause;
begin
MediaControl.Pause;
end;
procedure TfrmExample.Stop;
begin
MediaControl.StopWhenReady;
FilterSampleGrabber := NIL;
SampleGrabber := NIL;
MediaControl := NIL;
MediaPosition := NIL;
NullRenderer := NIL;
GraphBuilder := NIL;
end;
5th
Как отловить изменение раскладки клавы (ru/en или en/ru)?
procedure TForm1.Timer1Timer(Sender: TObject);
var Layout: array [0.. KL_NAMELENGTH] of char;
begin
GetKeyboardLayoutName(Layout);
if Layout = ‘00000409′ then label1.caption:=’en’
else label1.caption:=’ru’;
end;
5th
Изменение цвета шрифта надписи в ListBox
Stilet:
Вполне.
Выставь свойство Style:=lbOwnerDrawFixed
И опиши два обработчика:procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with TListBox(Control) do begin
if index=ItemIndex then
Canvas.font.Color:=clred
else
Canvas.font.Color:=clblack;
Canvas.FillRect(rect);
Canvas.TextOut(rect.Left,rect.Top,items[index]);
end;
end;procedure TForm1.ListBox1Click(Sender: TObject);
begin
ListBox1.Repaint;
end;
4th
Июл
Template CMS – маленькая и быстрая CMS
Разрешите представить сайтостроителям этого сообщества свою сиcтему управления сайтом Template CMS
Предназначение: сателлиты, домашние странички, мини сайты, сайты визитки.
Работа над CMS-кой еще ведется. Последняя рабочая версия 0.85
Template CMS 0.85 Основные возможности:
+ Простота установки, использования и обновления.
+ Удобный интерфейс администрирования.
+ Многоязычный интерфейс администрирования. (английский,русский,украинский +)
+ Минимальные требования к хостигу (без БД только PHP)
+ Ключевые слова и описание как для каждой страницы так и для всех.
+ Удобный редактор страниц (WYSIWYG – What You See Is What You Get ).
+ Создание бекапов сайта.
+ Смена тем оформления в один клик.
+ Легкость разработки и интеграции новых тем оформления.
+ Редактирование тем оформления прям из админки
+ Файловый менеджер с возможностью загрузки у правлением файлами на сервере.
+ Поддержка ЧПУ (с возможностью самому задавать расширения файлам .html . php etc…)
Сайт: http://templatecms.webdevart.ru/
Скриншоты: http://templatecms.webdevart.ru/galery
Сайты на этой CMS: http://templatecms.webdevart.ru/sites
Демо (0.85): http://templatecms.dtn.ru/admin.php
Пароль: demo
Ожидаемая обратная связь:
— Критика
— Предложения
— Слова поддержки
__________________
3rd
Июл
MASM и MASM32 – в чем различия?
Macro Assembler (MASM) — ассемблер для процессоров семейства x86. Создан компанией Microsoft для написания программ в операционной системы MS-DOS. Поддерживает разнообразие макросредств и структурированность программных идиом, включая конструкции высокого уровня для повторов, вызовов процедур и чередований. Продолжает развиваться и по сей день, последние версии включены в наборы DDK.
MASM32. Из интервью с создателем пакета MASM32 Стивеном Хатчессоном (Сидней, Австралия) – Как только с приходом Windows 95 стало необходимо создавать 32-х битные программы, я обнаружил, что инструментов для создания полезных и мощных программ сильно не хватает, и все большее распространение начали получать пакеты, облегчающие программирование для начинающих, но при этом, как правило, терялась большая часть возможностей, позволяющих писать выскокачественное программное обеспечение. Сначала я написал собственный редактор с помощью специализированного компилятора языка Бейсик, поскольку я был знаком с этим языком, и затем начал собирать информацию о создании ассемблерного пакета. Iczelion уже сделал кое-какую подготовительную работу, основываясь на том, что сделал ранее Стив Гибсон, и поскольку у меня был уже опыт в написании Windows-программ, я использовал некоторую часть из спроектированного Iczelion’ом, чтобы создать ранние версии MASM32. Главной идеей с самого начала было то, чтобы код на ассемблере было писать не труднее, чем на C, но чтобы он был более понятный и более мощный. Начиная с самых ранних версий MASM32, он разрабатывался при участии многих опытных программистов, которые хотели передать свой опыт следующему поколению программистов, и чтобы у них были подобающие инструменты, так же, как и у нас.
Облако меток
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 (Компьютерное железо)