Перейти к содержанию
Fire Monkey от А до Я

Slym

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

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

  • Посещение

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

    41

Весь контент Slym

  1. Нашел - Штрихи в текстах из той же оперы, кто-то еще округлял размеры и положение (найти не могу)
  2. Лечение уже обсуждалось, что-то найти не могу... у формы Fill сбрасываем в дефолт, любая заливка формы через отдельный ректангл.
  3. SharedActivity.startActivityForResult(intent, 0); результат получаешь в TMessageResultNotification intent.getStringExtra("SCAN_RESULT"); intent.getStringExtra("SCAN_RESULT_FORMAT");
  4. function IntEncode(const S, pwd: String): String; var i, iimax: integer; B, BPwd: TBytes; begin B:= TEncoding.Default.GetBytes(S); BPwd:= System.Hash.THashMD5.GetHashBytes(pwd); iimax:= High(BPwd); for i:= Low(B) to High(B) do B[i]:= B[i] Xor BPwd[i Mod iimax]; result:= TNetEncoding.Base64.EncodeBytesToString(B); end; TBytes "магический" тип как строка: работает +
  5. 1. for i:= low(s) to high(S) do 2. не шифруй строку - шифруй байты B:=TEncoding.Default.GetBytes(S); $0030 (0) XOR $D0AF (Я) = $D09f - это блин шифрация половина текста плаинтекстом? у тебя хэш из латиницы с нулями в hi байте... 0 xor i = i русский текст есть в D0 и D1 диапазонах - так что HashString фикция делай на TBytes там нолей рандом
  6. Slym

    NetHTTPClient Compression?

    Это "не стандартное" поведение, обычно клиент не сжимает, но RFC это не запрещает... но проверь поймет ли сервер твой запрос я использую deflate, gzip это тотже deflate столько с заголовками и CRC и заморочек в связи с этим больше... function CompressData(const Data:TBytes):TBytes; var Source, Dest:TBytesStream; begin Dest:= TBytesStream.Create; try Source:=TBytesStream.Create(Data); try ZCompressStream(Source, Dest, zcMax); finally Source.Free; end; Dest.Size:=Dest.Size; result:=Dest.Bytes; finally Dest.Free; end; end; //AHTUNG! Non standart Request Header (with standart Name)! If truble - Rename то X-Content-Encoding var Params:TBytes; if length(Params)>MinCompressionSize then begin Params:=CompressData(Params); NetHeaders.Value['Content-Encoding']:='deflate'; end;
  7. TMessageResultNotification... see more FMX.InAppPurchase.Android.pas в сообщении прилетит Intent а там по документации... http://fire-monkey.ru/topic/3183-opendialog-для-мобильных-платформ/#comment-37609
  8. заставлять надо TFDConnection, смотри charset* настройки конекшена
  9. System.SysUtils.TOSVersion.Architecture SizeOf(NativeInt)=8
  10. В большинстве случаев что используется в потоке должно быть там создано и уничтожено... в твоем случае RESTClient и RESTRequest создавай, пользуй и убивай в потоке
  11. DeviceToken должен получаться в отдельном потоке т.е. в примере PushServiceRegister вынеси в отдельный поток, и крути его до получения токена т.к. не сразу получается...
  12. Но нужен root... А если сторишь в External - ССЗБ.
  13. HTTPAnalyzer показывает: POST / HTTP/1.1 Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded; charset=utf-8 User-Agent: Embarcadero URI Client/1.0 Host: www.yandex.ru Content-Length: 148 nOwnerOrganizMode=1&cRegNumber=%D1%81-5%2F1&cBegRegDate=22.05.2029&cFIO=%D1%81%D0%B5%D1%80%D0%B3&cDocContent=%D0%B9%D1%86%D1%83qwe%D0%B9%D1%86%D1%83 Обилие %D0 - показывают что уходит UNICODE, а кодирование цифр и английского одним символом указывает что это UTF8... и заголовки этому соответствуют Проблема на клиенте отсутствует... копай сервис
  14. Post(const AURL: string; const ASource: TStrings; const AResponseContent: TStream = nil; const AEncoding: TEncoding = nil; cResponce := NetHTTPClient1.Post('https://сайт/сервис', ASource,nil, TEncoding.UTF8) .ContentAsString(TEncoding.UTF8); и смотрим заголовок application/x-www-form-urlencoded; charset=???
  15. а попробовать не кодировать? может оно само!
  16. как в iOS создать превью (Thumbnail) большой картинки и не занять всю память... Тестирую на 11Мб jpg, 14К*9К = 126MPx = 500МБ битмап, взято с запасом против 48Мpx камер Целевое разрешение 120*90 В лоб загрузка и отрисовка превью - дорого по памяти -можно вылететь, особенно в несколько потоков в андроид есть TJBitmapFactory.JavaClass.decodeFile(Options.inSampleSize) и оно в несколько потоков делает превью в иос инет тыкает в CGImageSourceCreateThumbnailAtIndex (kCGImageSourceCreateThumbnailWithTransform и kCGImageSourceThumbnailMaxPixelSize ) из ImageIO заголовков iOSapi.ImageIO - нет, но прикрутил правкой Macapi.ImageIO - поправил фреймворк на libImageIO = '/System/Library/Frameworks/ImageIO.framework/ImageIO'; но не работает, а отладка на теле недоступна т.к. сборка на удаленном маке. код сыпет ImgRef = nil, т.е. CGImageSourceCreateThumbnailAtIndex - не отрабатывает, либо заголовки мною криво накручены либо 126MPx не подъемны для iOS uses iOSapi.CocoaTypes, iOSapi.CoreGraphics, Macapi.CoreFoundation, iOSapi.ImageIO{переделанный Macapi.ImageIO}, Macapi.Helpers, class function TPhotoProxy.LoadInThumb(const Filename:string; Surface:TBitmapSurface; const PrefferedSize:TSize):boolean; var Path: CFStringRef; Url: CFURLRef; ImgSourceRef: CGImageSourceRef; ImgRef: CGImageRef; Dict: CFDictionaryRef; Keys: array [0..10] of Pointer; Value: array [0..10] of Pointer; IntValue: Cardinal; begin Result := False; Path := CFStringCreateWithCString(nil, MarshaledAString(UTF8Encode(Filename)), kCFStringEncodingUTF8); try Url := CFURLCreateWithFileSystemPath(nil, Path, kCFURLPOSIXPathStyle, False); try ImgSourceRef := CGImageSourceCreateWithURL(Url, nil); if ImgSourceRef = nil then raise Exception.Create('ImgSourceRef = nil'); try Keys[0] := CFSTR('kCGImageSourceCreateThumbnailWithTransform'); Value[0] := kCFBooleanTrue; Keys[1] := CFSTR('kCGImageSourceCreateThumbnailFromImageAlways'); Value[1] := kCFBooleanTrue; Keys[2] := CFSTR('kCGImageSourceThumbnailMaxPixelSize'); if PrefferedSize.cx > PrefferedSize.cy then IntValue := Trunc(PrefferedSize.cx) else IntValue := Trunc(PrefferedSize.cy); Value[2] := CFNumberCreate(nil, kCFNumberSInt32Type, @intValue); Dict := CFDictionaryCreate(nil, @Keys[0], @Value[0], 3, nil, nil); try ImgRef := CGImageSourceCreateThumbnailAtIndex(ImgSourceRef, 0, Dict); if ImgRef = nil then raise Exception.Create('ImgRef = nil'); try Result := ImageToSurface(ImgRef, Surface, MaxInt); finally CGImageRelease(ImgRef); end; finally CFRelease(Dict); end; finally CFRelease(ImgSourceRef); end; finally CFRelease(Url); end; finally CFRelease(Path); end; end; к то чем поможет?
  17. а бездумно копипастить вредно. форум режет скобки... JArray.Items [ i ]; приведенный код не соответствует тексту JSON... нету в тексте Array (обозначается [ ])
  18. Также серьезно как и TObject(nil).Free; //no problem Это работает! Поверь и проверь. В любом вызове метода объекта передается первым параметром self, и достаточно сделать в самом начале if self=nil then exit; - и проблемы нет так делает TJSONValue.FindValue, так делает TObject.Free пример из генофонда: procedure TObject.Free; begin // under ARC, this method isn't actually called since the compiler translates // the call to be a mere nil assignment to the instance variable, which then calls _InstClear {$IFNDEF AUTOREFCOUNT} if Self <> nil then Destroy; {$ENDIF} end;
  19. Slym

    TEdit искажает текст

    Данный артефакт я тоже ловил на лабелах - лечится именно восстановлением фона. (хотя эм могла гденить еще косячнуть) Во всех формах надо убрать фон (возможно ты используешь несколько форм)... В чистом проекте артефакт есть? сделай полный билд, передерни эм делфи, кофе попей...
  20. function Proc(const Answerreqest:string):boolean; var JSON,AItem: TJSONValue; JRequest, JDistance: TJSONObject; JArray: TJSONArray; I: integer; begin JSON := TJSONObject.ParseJSONValue(Answerreqest); //if not Assigned(JSON) then exit(false); //<<< прикинь даже не обязательно проверять на nil JPath работает через FindValue - а он сам проверяет на nil try if JSON.TryGetValue<TJSONObject>('request',JRequest) then TabbedForm.memo3.Lines.Add('JRequest: ' + JRequest.ToString); if JSON.TryGetValue<TJSONObject>('distance',JDistance) then begin TabbedForm.memo3.Lines.Add('JDistance: ' + JDistance.ToString); TabbedForm.memo3.Lines.Add('price_1: ' + JDistance.GetValue<string>('price_1','')); if JDistance.TryGetValue<TJSONArray>('SomeArray',JArray) then begin TabbedForm.memo3.Lines.Add('count: ' + JArray.Count.ToString); for I := 0 to JArray.Count - 1 do begin AItem := JArray.Items; TabbedForm.memo3.Lines.Add(AItem.GetValue<string>('obj_id','') + ',' + AItem.GetValue<string>('obj_acc_id','') + ',' + AItem.GetValue<string>('obj_cat_id','')); TabbedForm.memo3.Lines.Add(AItem.GetValue<string>('obj_title','')); TabbedForm.memo3.Lines.Add(AItem.GetValue<string>('obj_descr','')); TabbedForm.memo3.Lines.Add(AItem.GetValue<string>('obj_address','')); TabbedForm.memo3.Lines.Add(AItem.GetValue<string>('obj_url','')); end; end; end; finally JSON.Free; end; result:=true; end;
  21. Slym

    TEdit искажает текст

    УБЕРИ ФОН С ФОРМЫ: фон делай отдельным Rectanglом - там любой цвет кроме шрифтов всплывет и другое читать тут:
  22. ни одного TJSONArray в ответе нет так же нет ничего из этого: TabbedForm.memo3.Lines.Add(aJSObjArr.GetValue('obj_id').Value + ',' + aJSObjArr.GetValue('obj_acc_id').Value + ',' + aJSObjArr.GetValue('obj_cat_id').Value); TabbedForm.memo3.Lines.Add(aJSObjArr.GetValue('obj_title').Value); TabbedForm.memo3.Lines.Add(aJSObjArr.GetValue('obj_descr').Value); TabbedForm.memo3.Lines.Add(aJSObjArr.GetValue('obj_address').Value); TabbedForm.memo3.Lines.Add(aJSObjArr.GetValue('obj_url').Value); бросай те вы уже эти as TJSONArray as TJSONObject - где проверки на существование? жесткого приведения требует только разве что TJSONArray, а остальное выше TJSONValue приводить не обязательно. используйте нотацию TJSONValue.GetValue<string>('obj_title','').- не найдено встанет значение по умолчанию... не нравится возьми TryGetValue даже jpath(указание пути названий узлов) работает JSONValue.GetValue<integer>('request.people_count,0) - даже с массивами... касаемо массивов - можно указать тип искомой ноды SONValue.GetValue<TJSONArray>('request.distance',nil)
  23. FDQuery1.Lookup? или RTTI c:=FindComponent(FDQuery1.Fields[1].AsString) if assigned(c) SetProp(c,FDQuery1.Fields[2].AsString,TValue.From(FDQuery1.Fields[3].AsString))
  24. Под андроид идет опция AUTOREFCOUNT - все объекты имеют счетчик ссылок... любое присваивание - это +/- ссылки, даже Free не честное: procedure TObject.Free; begin // under ARC, this method isn't actually called since the compiler translates // the call to be a mere nil assignment to the instance variable, which then calls _InstClear {$IFNDEF AUTOREFCOUNT} if Self <> nil then Destroy; {$ENDIF} end; т.е. Free ничего не делает!!! - экземпляр остается в зомбирежиме (ты его убил а оно ходит) пока счетчик до 0 не до тикает. TObject(TreeItem); - пытается найти методы подсчета ссылок (Это же объект!) и не находит т.к. это не объект вовсе. TTreeItem = record меняем на TTreeItem = class, честно создаем и не забываем убить, хотя под AUTOREFCOUNT - оно само должно помереть если циклической ссылочности нет.
  25. аяяй! Совсем разленились try юзать, все на RefCounting надеетесь... ну-ну... а под вендой мемлики плодятся (если файла нет - Surf куда?) не-не... переделать! а то студенты накопипастят... procedure TBitmapAsyncLoader.LoadImageAsync(const AFilePath:string; Callback: TProc); begin TTask.Run( procedure var ABitmapSurface : TBitmapSurface; begin ABitmapSurface:=TBitmapSurface.Create; try if TBitmapCodecManager.LoadFromFile(AFilePath, ABitmapSurface, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) and assigned(Callback) then TThread.Synchronize(nil, Callback); finally ABitmapSurface.Free; end; end); end;
×
×
  • Создать...