-
Постов
69 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Активность репутации
-
Dmitry Stolyarov получил реакцию от Ingalime в Получить фото из галереи через Intent
Рабочий код:
procedure TForm1.HandleActivityMessage(const Sender: TObject; const M: TMessage); var RequestCode, ResultCode: Integer; Intent: JIntent; uri : Jnet_Uri; bitmap: JBitmap; surface: TBitmapSurface; begin if not(M is TMessageResultNotification) then exit; TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, FMessageSubscriptionID); FMessageSubscriptionID := 0; RequestCode:=TMessageResultNotification(M).RequestCode; ResultCode:=TMessageResultNotification(M).ResultCode; Intent:=TMessageResultNotification(M).Value; if (ResultCode = TJActivity.JavaClass.RESULT_OK) and Assigned(Intent) then begin try uri:=Intent.getData; bitmap := TJImages_Media.JavaClass.getBitmap(SharedActivity.getContentResolver, uri); surface := TBitmapsurface.Create; JBitMapToSurface(bitmap,surface); Image1.Bitmap.Assign(surface); finally surface.Free; end; end;
-
Dmitry Stolyarov получил реакцию от Yarpda в Получить фото из галереи через Intent
Рабочий код:
procedure TForm1.HandleActivityMessage(const Sender: TObject; const M: TMessage); var RequestCode, ResultCode: Integer; Intent: JIntent; uri : Jnet_Uri; bitmap: JBitmap; surface: TBitmapSurface; begin if not(M is TMessageResultNotification) then exit; TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, FMessageSubscriptionID); FMessageSubscriptionID := 0; RequestCode:=TMessageResultNotification(M).RequestCode; ResultCode:=TMessageResultNotification(M).ResultCode; Intent:=TMessageResultNotification(M).Value; if (ResultCode = TJActivity.JavaClass.RESULT_OK) and Assigned(Intent) then begin try uri:=Intent.getData; bitmap := TJImages_Media.JavaClass.getBitmap(SharedActivity.getContentResolver, uri); surface := TBitmapsurface.Create; JBitMapToSurface(bitmap,surface); Image1.Bitmap.Assign(surface); finally surface.Free; end; end;
-
Dmitry Stolyarov отреагировална krapotkin в Разбор JSON с мультизапросом
arr:=SA(JSON); for i:=0 to arr.length-1 do arr2:=arr.a[i];
-
Dmitry Stolyarov отреагировална GASCHE в Отображение картинок в ListView
Грузятся если заменить if (FListViewUpdating) or (AAsyncResult.IsCancelled) then на if (FListViewUpdating) or (AsyncResult.IsCancelled) then.
AAsyncResult у меня NIL
-
Dmitry Stolyarov отреагировална Евгений Корепов в Разбор JSON с мультизапросом
Мимо проходил. Вот вам код на php (собираем все данные в один массив и энкодим в json)
$QueryArray = array( "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", ); $Index = 0; $ResultArray = array(); foreach ($QueryArray as $query) { if ($mysqli_result = mysqli_query($DBLink, $query)) while ($row = mysqli_fetch_array($mysqli_result, MYSQLI_ASSOC)) $ResultArray[$Index][] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON;
-
Dmitry Stolyarov получил реакцию от Barbanel в Разбор JSON с мультизапросом
krapotkin, спасибо!
Публикую, может кому-то пригодится..
на стороне PHP:
$query1 = "SELECT ... FROM `...`;"; $query2 = "SELECT ... FROM `...`;"; $query3 = "SELECT ... FROM `...`;"; $query4 = "SELECT ... FROM `...`;"; function GetValuesAsJson($query, $Link) { if ($DBResult = mysqli_query($Link, $query)) { $ResultArray = array(); $Index = 0; while ($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC)) { $ResultArray[$Index] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); return $ResultJSON; mysqli_free_result($DBResult); } }; echo '{"Arr1":'. GetValuesAsJson($query1, $DBLink).', "Arr2":'.GetValuesAsJson($query2, $DBLink).', "Arr3":'.GetValuesAsJson($query3, $DBLink).', "Arr4":'.GetValuesAsJson($query4, $DBLink).'}'; mysqli_close($DBLink); на стороне delphi:
xJS := SO(aJSON); with xJS.A['Arr1'] do // имя массива begin for j := 0 to length - 1 do begin xObj := O[j]; Memo1.Lines.Add(xObj.S['cities_name']); // собираем нужные данные ... end;
-
Dmitry Stolyarov отреагировална krapotkin в Разбор JSON с мультизапросом
вы просто без разделителей склеиваете три разных JSON-массива
вам бы каждый из них описать отдельно. да и вообще принято логически законченные участки кода выделять в отдельные функции
function GetValuesAsJson($query) { ..... } тогда будет например
'{"Arr1":'. GetValuesAsJson($query1). ', "Arr2":'.GetValuesAsJson($query2).', "Arr3":'.GetValuesAsJson($query3).'}' ну и разбор полученного объекта например с помощью XSuperObject. Примеры есть на офсайте https://github.com/onryldz/x-superobject
-
Dmitry Stolyarov получил реакцию от Alisson R Oliveira в Отображение картинок в ListView
Добрый день!
Использую Ваш пример... и столкнулся с такой же траблой.. (в последнем приложенном файле та же трабла..)
Подскажите, пжл, куда копать..
procedure TForm1.FormCreate(Sender: TObject);
var
sUrl: string;
i: integer;
item:TListViewItem;
begin
with qLess do
try
if qLess.Active then Close;
Open;
while not eof do
begin
with ListView1 do
begin
Item:=listview1.Items.Add;
Item.Text := qLessLESS_NAME.AsString;
Item.Detail:= qLessLESS_DESC.AsString;
Item.Data['URL'] := qLessIMG_URL.AsString;
Item.Data['loading'] := 0; // даём знать, что можно загрузить картинку
end;
next;
end;
except
//
end;
end;
procedure TForm1.ListView1Paint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
var i:integer;
begin
for i := 0 to ListView1.Items.Count-1 do
begin
if (i >= 0) and (i < ListView1.Items.Count) then
begin
if ListView1.Items.Bitmap.Image<>NIL then
if (ListView1.Items.Data['loading'].AsInteger = 0) then
begin
ListView1.Items.Data['loading']:= 1;
ListView1.Items.Bitmap.LoadFromUrlToListViewItem(ListView1.Items.Data['URL'].AsString, ListView1);
end;
end;
end;
end;
{ TBitmapHelper }
procedure TBitmapHelper.LoadFromUrlToListViewItem(AUrl: string;
AListView: TListView);
var thread: TThread;
begin
thread := TThread.CreateAnonymousThread(
procedure
var
NetHTTPClient: TNetHTTPClient;
Result: TMemoryStream;
begin
Result := TMemoryStream.Create;
NetHTTPClient := TNetHTTPClient.Create(nil);
try
try
NetHTTPClient.Get(AUrl, Result);
TThread.Synchronize(TThread.CurrentThread,
procedure()
var
tempBitMap: TBitmap;
begin
tempBitMap := TBitmap.Create;
tempBitMap.LoadFromStream(Result);
if not tempBitMap.IsEmpty then
begin
self.Assign(tempBitMap);
AListView.Paint;
end;
end);
except
Result.Free;
end;
finally
NetHTTPClient.Free;
end;
end);
thread.FreeOnTerminate := true;
thread.start;
end;
-
Dmitry Stolyarov отреагировална osvirt в Unsupported media file
Реанимирую тему.
Вылезла такая же ситуация, при очень странных обстоятельствах.
Накануне вечером компилил проект - всё проигрывалось. Комп не выключался на ночь, IDE не закрывал, утром запускаю - ошибка.
Что ещё страннее - скомпилированный и работавший вчера ехешник, лежащий в другой папке с другой копией mp3шного файла, тоже ругается.
-
Dmitry Stolyarov отреагировална IVGSoft в Обработка анимированных GIF по рецепту китайского коллеги
В конце концов получилось исправить.
Для interlaced гифок проблема была вообще пустяковая. Одна строчка не в том месте. А вот для optimized все оказалось несколько сложней, но в итоге теперь все гифки отображаются правильно.
Пользуйтесь на здоровье!
FMX.GifUtils.zip
-
Dmitry Stolyarov отреагировална krapotkin в THTTPClient авторизация
Конечно можно. А что такое "авторизоваться" ?
-
Dmitry Stolyarov получил реакцию от Barbanel в Убрать рамку TWebBrowser
т.к. нужна была статическая страница (по сути картинка) , то решил через скрины)