audio.getPopular
only_eng - 1 — to return only foreign audio files, 0 — to return all audio files
genre_id - Genre ID. See the list of audio genres. (positive number)
offset - Offset needed to return a specific subset of audio files. (positive number)
count - Number of audio files to return. (positive number, maximum value 1000, default 100)
CanClose := False;
и выполнить остановку потока (т.е. установить флаг) и ждать пока он завершится, то всё завершается без проблем и блокировки не происходит. А затем можно вызвать завершение всей программы. photos.getWallUploadServer
multipart/form-data
photos_list
. Затем, выполняешь photos.save
, передав photos_list
в параметрах. был у меня вариант с реестром, но он еще и подтверждение постоянно просит
{
"one_time": true,
"inline": false,
"buttons": [ <------- а где ещё массив?
{
"action": {
"type": "text",
"payload": "{\"button\":\"btn_1\"}",
"label": "Привет"
},
"color": "secondary"
}
]
}
public function generateButtons(array $buttons, bool $inline = false) : string {
$array = [
'one_time' => !$inline,
'inline' => $inline,
'buttons' => [],
];
foreach ($buttons as $item) {
$array['buttons'][][] = [ <---- ещё один массив
'action' => [
'type' => $item['type'],
'payload' => json_encode($item['payload'], JSON_UNESCAPED_UNICODE),
'label' => $item['label'],
],
'color' => $item['color'],
];
}
return json_encode($array, JSON_UNESCAPED_UNICODE);
}
{
"one_time": true,
"inline": false,
"buttons": [
[
{
"action": {
"type": "text",
"payload": "{\"button\":\"btn_1\"}",
"label": "1233123"
},
"color": "secondary"
}
]
]
}
SetLength(a, SpaceCount + 1);
LastPos := 1;
LastIndex := 0;
for i := 1 to Length(Str) do
if Str[i] = ' ' then
begin
a[LastIndex] := Copy(Str, LastPos, (i - LastPos)); //-- тут возможно +-1
Inc(LastIndex);
LastPos := i;
end;