Последние записи
- Как в 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
20th
Сен
Изменение цвета шрифта надписи в выделенной ячейки ListBox
Stilet:
Выставь свойство Style:=lbOwnerDrawFixed
И опиши два обработчика:
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;
18th
Сен
Позиция в BASS
В каком формате BASS возвращает позицию и длину файла, если передавать флаг BYTE_POS (флаг написал по памяти, тот кто знает поймет)?
Это точно не байты, и не связано с секундами вроде никак.
Как перевести в наше человеческое время?
function qbass_gettime(const Channel: DWORD): DWORD;
var
pPos: Cardinal;
AllTime: Cardinal;
begin
Result := 0;
pPos := BASS_ChannelGetLength(Channel, BASS_POS_BYTE);
if (pPos > 0) then
begin
Alltime := Trunc(BASS_ChannelBytes2Seconds(Channel, pPos));
Result := Alltime;
end;
end;
Получает длину трека, а в наше время переводит эта функа:
function qbass_formattime(const Sec: Integer;
const IsURL: boolean): string;
(*******************************************
* RESULT: " 99:99" | "999:99" * | " Radio" *
*******************************************)
const
time = ' 00:00';
radio = ' Radio';
null = ' ';
var
H, M, S: Integer;
Return: string;
begin
if Sec = -1 then
Return := null
else
if Sec < 0 then
Return := time
else
if IsURL then
Return := radio
else
begin
H := Sec div 3600;
S := Sec mod 3600;
M := S div 60;
M := M + (H * 60);
S := (S mod 60);
if M > 99 then Return := Format('%3d:%2.2d', [M, S])
else Return := Format('%2.2d:%2.2d', [M, S]);
end;
Result := Return;
end;
Использовать:
var s:string; mCc,lng: DWORD; begin mCc := BASS_StreamCreateFile(false, pointer(fail), 0, 0, 0 ); try lng := qbass_gettime(mCc); s:= qbass_formattime(lng,false);
15th
Сен
Как снимать звук не со стерео микшера а с микрофона.
На Delphi кода, к сожалению, нет. Есть на си. При желании разобраться можно.
В примере звук захватывается с микшера. Чтобы захватывать с микрофона, нужно в строке:
Res = waveInOpen((HWAVE *)&In,-1,&Format,(DWORD)WorkerThreadId,0,CALLBACK_THREAD);
заменить -1 на UID микрофона (просто число типа 0,1,2…). А чтобы найти микрофон, нужно вызвать waveInGetNumDevs. Эта функция возвращает количество устройств в системе. А затем, добавляя в Combo на форме, результат функции waveInGetDevCaps для каждого UID от 0 до waveInGetNumDevs, можно сделать выбор микрофона.
15th
У всех пользователей форума есть несколько стадий
1. Только зарегился, всем хочешь помочь, отвечаешь на вопросы, стараешься получить положительные отзывы, заработать очки репутации и набрать примерно 300-400 сообщений, в общем, хочешь выделиться из толпы, к концу стадии начинаешь общаться во флудерских разделах.
2. Начинается примерно после набора 400-450 сообщений, тебя уже знают на форуме, появляются друзья, с некоторыми переписываешься в аське, на количество сообщений уже необращаешь внимаение, количество очков репутации всё ещё важный параметр. Отвечаешь только на интерисующие тебя темы и вопросы, стараешься делать более качественные ответы. Большинство сообщений уже во флудерских разделах. Стараешься активно учавствовать в жизни форума. Некоторых (единицы) назначают модератором в некоторых разделах.
3а. Третья стадия постянного юзера форума. Наступает после 1000 сообщений. Общаешься в основном во флудерских разделах, в тематических разделах, отвечаешь только самые-самые интересные темы и вопросы. На репутацию и сообщения уже наплевать. Некоторые юзеры, и во флудерских разделах уже почти общаются, отписываются только в самых интересных темах.
3б. Третья стадия постоянного юзера-модератора. Наступает после назначения модератором на раздел. Первая стадия “дубль два”, снова отвечаешь на вопросы в назначенном разделе, хочешь заработать ещё очков репутации, и ещё несколько сотен сообщений, хочешь сделать раздел на который назначили лучше (добавляешь ссылки на литературу, создаёшь правила). Да чуть не забыл, активно пользуешься системой наказаний, также часто делаешь отзывы другим пользователям (чтобы отвечали лучше те, которые находятся на первой или второй стадии). В общем стараешься сдела
ть форум лучше.
4. Четвёртая стадия есть только у модератора, повторяет третью стадию обычного юзверя, наступает примерно после набора 2000 сообщений. Общаешься в основном во флудерских разделах, в своём разделе следишь только “за порядком”, отвечаешь очень редко (и то, только если самому интересно или больше некому).
copyright (c) rpy3uH, супермодератор programmersforum.ru.
http://programmersforum.ru/showpost.php?p=335439&postcount=28
15th
Imageshack Upload Api
Листинг о том, как загружать изображения на сайт imageshack.us.
function sendimgs(path:string):string;
var
HTTP: TIdHTTP;
MPS: TIdMultiPartFormDataStream;
s,s2,format:string;
begin
HTTP := TIdHTTP.Create(nil);
MPS := TIdMultiPartFormDataStream.Create;
HTTP.HandleRedirects := True;
s:='';
if fileexists(path) then
begin
try
{mps.AddFormField('Upload', 'Submit Query');
s:= HTTP.Post('http://iload8.imageshack.us/upload_api.php', MPS); }
mps.AddFile('fileupload', path, 'multipart/form-data');
s:= HTTP.Post('http://imageshack.us/index.php', MPS);
if pos('/images/blue/check.png', s)>0 then
begin
result:='Done';
end;
result:='Error while sending';
finally
MPS.Free;
HTTP.Free;
deletefile(path);
end;
end else result:='File not found';
end;
14th
Сен
Как узнать разницу в часах между текущим системным временем и исходными данными?
Код:
uses DateUtils;
...................
var
t: TTime;
dt: TDateTime;
begin
t := StrToTime(Edit1.Text);
dt := DateTimePicker1.Date + t;
ShowMessage(FloatToStr(HoursBetween(Today,dt)));
end;
13th
Сен
idHTTP и кодировка
добрый вечер. в переменную типа стринг качается через идхттп гет запросом страница. страница в ютф8, после всего этого пытаюсь распарсить через pos (нужно найти фразу <liкакойтотекстнарусском<strong>) . соответственно, руские буквы кракозябрами, и пос их не ищет. пытался декодировать utf8toansi и наоборот – ничего не помогает. кракозябры меняются только
function UTF8ToStrSmart(Value: String): String;
function UTF8ToStr(Value: String): String;
var
buffer: Pointer;
BufLen: LongWord;
begin
BufLen := Length(Value) + 4;
GetMem(buffer, BufLen);
FillChar(buffer^, BufLen, 0);
MultiByteToWideChar(CP_UTF8, 0, @Value[1], BufLen - 4, buffer, BufLen);
Result := WideCharToString(buffer);
FreeMem(buffer, BufLen);
end;
var
Digit: String;
i: integer;
HByte: Byte;
Len: Byte;
begin
Result := '';
Len := 0;
if Value = '' then Exit;
for i := 1 to Length(Value) do
begin
if Len > 0 then
begin
Digit := Digit + Value;
Dec(Len);
if Len = 0 then
Result := Result + UTF8ToStr(Digit);
end else
begin
HByte := Ord(Value);
if HByte in [$00..$7f] then //Standart ASCII chars
Result := Result + Value
else begin
//Get length of UTF-8 char
if HByte and $FC = $FC then
Len := 6
else if HByte and $F8 = $F8 then
Len := 5
else if HByte and $F0 = $F0 then
Len := 4
else if HByte and $E0 = $E0 then
Len := 3
else if HByte and $C0 = $C0 then
Len := 2
else begin
Result := Result + Value;
Continue;
end;
Dec(Len);
Digit := Value;
end;
end;
end;
end;
Есть ещё 2 совета.
1. Брось инди и переходи на ICS.
2. Обнови инди до максимально последней версии.
Код:
function HttpGetUrl(url: string; idHttp: TidHttp): string;
var
M: TStringStream;
begin
M := TStringStream.Create('');
// try
try
IdHTTP.Get(url, m);
if IdHTTP.ResponseCode = 502 then
begin
result := 'ошибка|'+url;
freeandnil(m);
exit;
end;
except
on e: exception do
begin
// MessageBox(application.ActiveFormHandle, PAnsiChar('Произошла ошибка при получении текста страницы: '+#13+ url + #13+e.Message), 'Ошибка', IDOK);
result := 'ошибка|'+url;
freeandnil(m);
end;
end;
result := m.DataString;
// finally
freeandnil(m);
// end;
end;
итого полный код будет:
Код:
//получаем тест страницы со ссылками на объявления
slText := UTF8ToStrSmart(HttpGetUrl(URL, idHttp1));
12th
Сен
Перевод PByte в TBytes
var
p: PByte;
p1: TBytes;
i: byte;
begin
GetMem(p, 5);
for i := 0 to 4 do
begin
p^ := i;
Inc(p, 1);
end;
Dec(p, 5);
SetLength(p1, 5);
Move(p^, p1[0], 5);
FreeMem(p);
end;
12th
Анимированный Gif в компоненте Image
Есть модуль от Андерса Меландера, бесплатный. Подключаете его в секцию uses и пишете код:
procedure Tform1.FormCreate(Sender : Tobject);
var
gif : TGifImage;
begin
gif:=TGIfImage.Create;
try
Image1.Picture.LoadFromFile('1.gif);
finally
gif.Free;
end;
end;
А вот собственно сам модуль
9th
Сен
Всплывающее окно и фокус
В программе есть всплывающее окно, как сделать чтобы когда оно будет всплывать, оно было поверх остальных окон, но при этом не брало на себя фокус ввода?
код:
var
Form2: TForm;
begin
Form2 := TForm.Create(Form1);
Form2.FormStyle := fsStayOnTop;
…
Form2.Show;
Form1.Show;
end;
Облако меток
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 (Компьютерное железо)