Перейти к содержанию

gonzales

Пользователи
  • Активность

    263
  • Зарегистрирован

  • Посещение

  • Победитель дней

    13

gonzales стал победителем дня 9 сентября

gonzales имел наиболее популярный контент!

Информация о gonzales

  • Звание
    Продвинутый пользователь

Посетители профиля

5 619 просмотров профиля
  1. Переделал только немного под себя, чтобы строку в ответ выдавал function TForm1.Get(const ASession: TIdHTTP; const AUrl: string):string; begin result:=ASession.Get(ASession.URL.URLEncode(AUrl)); end;
  2. А вот это работает корректно!!! Спасибо большое!!!
  3. странно, но почему-то такая конструкция упорно ставит первым символом /. То есть возвращает '/http://firemonkey.ru..... Естественно запрос не отрабатывается
  4. bytes := BytesOf(s1); bytes:=TEncoding.Convert(TEncoding.Default,TEncoding.UTF8,bytes); s2 := StringOf(bytes); Пробовал еще вот так, перебирал кодировки - ничего не помогло(((
  5. Доброго времени суток! Помогите плиз, чет я запарился, не могу найти решение. Мне нужно сделать GET запрос к серверу с параметрами, содержащими русские буквы. Примерно вот такой 'method=update&OrderNum='+ordernum+'&FieldName='+grid.Columns[ACol].Header+'&FieldValue='+ UTF8Encode('русские буквы'); Запрос передаю через idHTTP. UTF8Encode не работает, или я им пользоваться не умею. Подскажите, как правильно сделать?
  6. Правильно ли я Вас понял, Вы имеете в виду, что если у меня будет несколько объектов типа TForm2 - то далеко не факт, что экземпляр form2 вообще существует. Но поскольку этот экземпляр - единственный, то такой подход применим.
  7. Ничего лучше Form1.Free - я не придумал. Но работает без сбоев. Уважаемый krapotkin, не могли бы Вы пояснить более развернуто Вашу мысль. Я во многих ваших ответах встречаю, что обращаться из класса к экземпляру класса - это плохо. Но не понятно, почему, что плохого произойдет при таком обращении? Например вот такой код procedure TForm2.Button2Click(Sender: TObject); begin form2.button2.text:='test'; end; Вы везде указываете, что такая запись некорректная и правильно было бы писать button2.text:='test';
  8. Тоже остановился на этом варианте. Пробовал и такой вариант - почему-то иногда падает приложение. Не разобрался, почему. Перешел на r.Free. Вроде все корректно
  9. Доброго времени суток! Знаю, что тема поднималась 100500 раз, сам писал в них, но тем не менее... После перехода на 10.4 стал замечать, что приложение на мобильных платформах стало частенько зависать или выдавать сообщения External Exception xx. Стал разбираться и заметил, что такое поведение часто происходит после уничтожения объектов или форм. Прогуглив тему динамического удаления объектов нашел информацию вот такого характера Now, that being said, in RAD Studio 10.4, Embarcadero has removed object ARC handling completely, going back to the traditional memory management model (which they now refer to as "Unified Memory Management"). In which case, TObject.Free() and FreeAndNil() now behave the same as they always have on non-mobile platforms, but now on all platforms equally. So your original code will now work as expected, you do not need to switch to TObject.DisposeOf() in 10.4 onwards (though, you can if you want to, it will behave exactly like TObject.Free(), and give you the desired effect if you need to support 10.3 and earlier). То есть, если я правильно понимаю, Эмба отказалась от ARC и вернулась к традиционной модели управления памятью. И теперь нужно обратно вернуться к TObject.Free(), еще компилятор стал ругаться, что метод Release помечен, как deprecated - то есть в скором времени исчезнет. В связи с этим два вопроса 1. Может ли конструкция r.DisposeOff; r:=nill; приводить к зависанию программы? Нужно ли теперь заменить все на r.Free; 2. Как теперь удалить форму, кликнув на кнопку, которая расположена на этой форме? procedure TForm30.BlackRectClick(Sender: TObject); begin form1.BlackRect.Visible := false; Form30.Close; //Form30.Free; Form30.Release; end; Такая конструкция работает, но часто программа зависает procedure TForm30.BlackRectClick(Sender: TObject); begin form1.BlackRect.Visible := false; Form30.Close; Form30.Free; //Form30.Release; end; Такая конструкция крашит программу, но это и понятно, удаляем сук, на котором сидим. Но если Release перестанет работать, как тогда удалить форму?
  10. Долго бился со следующим, есть три типа устройств: 1. где отсутствует NavBar физически, 2. где он есть и всегда включен, 3. где он есть, но его можно выключить в настройках. В результате добился нормальной работы окраски NavBar на всех типах. Немного изменил код, приведенный Равилем из примера Update2 function hasNavbar(out navBarHeight: Integer): boolean; // uses Androidapi.JNI.Util, {$IFDEF ANDROID} var Window: JWindowExt; realSize: JPoint; screenSize: JPoint; metrics: JDisplayMetrics; difference, resourceID: Integer; {$ENDIF} begin Result := false; navBarHeight := 0; {$IFDEF ANDROID} metrics := TJDisplayMetrics.Create; realSize := TJPoint.Create; screenSize := TJPoint.Create; Window := GetWindowExt; Window.getWindowManager.getDefaultDisplay.getRealMetrics(metrics); realSize.x := metrics.widthPixels; realSize.y := metrics.heightPixels; Window.getWindowManager.getDefaultDisplay.getSize(screenSize); if realSize.y <> screenSize.y then begin difference := realSize.y - screenSize.y; resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navBarHeight := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID)); if navBarHeight > 0 then if difference < navBarHeight then begin navBarHeight := 0; Result := false; end else Result := true; end else begin navBarHeight := 0; Result := false; end; {$ENDIF} end;
  11. Ну и у Вас заработало? У меня нет, картинки как были стандартными - так и остались. А какое разрешение Вы установили?
  12. Ну судя по всему вот так function TSplashForm.GetStatusBarHeight: Single; {$IFDEF IOS} var LResult: PSingle; {$ENDIF} begin {$IFDEF IOS} if FStatusBarChecked then Result := FStatusBarHeight else begin Result := 0; LResult := @Result; TThread.Synchronize(nil, procedure() begin if (not FStatusBarChecked) and (TiOSHelper.SharedApplication.windows.count > 0) and Assigned(TUIWindow.Wrap(TiOSHelper.SharedApplication.windows.objectAtIndex(0)).rootViewController) and Assigned(TUIWindow.Wrap(TiOSHelper.SharedApplication.windows.objectAtIndex(0)).rootViewController.view) then begin FStatusBarHeight := TUIWindow.Wrap(TiOSHelper.SharedApplication.windows.objectAtIndex(0)).safeAreaLayoutGuide.layoutFrame.origin.y; FStatusBarChecked := True; end; LResult^ := FStatusBarHeight; end); end; {$ELSE} Result := 0; {$ENDIF} end; На 8-ом возвращает 20, как и должно быть. 10 к сожалению нет. Может кто-нибудь проверить?
  13. А размер статусбара нельзя таким образом узнать? Если я правильно понял, на айфонах до 10-го он должен быть 20 пикселей, а начиная с 10-го - 44. Но как узнать это программно? На свифте должно быть что-то типа CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height; А как переделать на делфи?
  14. Да, и еще в догонку, может кто знает,как избавиться от затенения статусбара?
×
×
  • Создать...