Platform : Delphi XE5 Update 2 Only a function to open file in Windows,Android, Ios…. Windows –> shellExecute Android –> sending an intent to SO Ios –> using NSUrl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
uses ... IdGlobalProtocols,{$IFDEF MSWINDOWS}, WinFolderSelectUtils {$ENDIF} {$IFDEF MSWINDOWS }, WinAPI.ShellApi, WinAPI.Windows {$ENDIF} {$IFDEF ANDROID} ,FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net, Androidapi.JNI.JavaTypes, idUri,Androidapi.IOUtils {$ENDIF ANDROID} {$IFDEF IOS} ,iOSapi.Foundation, FMX.Helpers.iOS {$ENDIF IOS}; function OpenURLorFile(URL: string; const DisplayError: Boolean = False): Boolean; {$IFDEF MSWINDOWS} begin ShellExecute(0, 'OPEN', PChar(URL), '', '', SW_SHOWNORMAL); end; {$ELSE} {$IFDEF ANDROID} var Intent: JIntent; idMimeTable: TIdMimeTable; begin // There may be an issue with the geo: prefix and URLEncode. // will need to research if URl.toLower.StartsWith('http://') then Begin Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, TJnet_Uri.JavaClass.parse(StringToJString(TIdURI.URLEncode(URL)))); End Else Begin try idMimeTable := TidMimeTable.Create; Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); if not url.ToLower.StartsWith('file://') then url := 'file://' + url; Intent.setDataAndType(StrToJURI(Url), StringToJString(idMimeTable.GetFileMIMEType(Url))); Finally try idMimeTable.Free; except end; End; End; try SharedActivity.startActivity(Intent); exit(true); except on e: Exception do begin if DisplayError then ShowMessage('Error: ' + e.Message); exit(false); end; end; end; {$ELSE} {$IFDEF IOS} var NSU: NSUrl; begin // iOS doesn't like spaces, so URL encode is important. NSU := StrToNSUrl(TIdURI.URLEncode(URL)); if SharedApplication.canOpenURL(NSU) then exit(SharedApplication.openUrl(NSU)) else begin if DisplayError then ShowMessage('Error: Opening "' + URL + '" not supported.'); exit(false); end; end; {$ELSE} begin raise Exception.Create('Not supported!'); end; {$ENDIF IOS} {$ENDIF ANDROID} {$ENDIF WINDOWS} |
To convert the Java int to Delphi date time :
1 2 3 4 5 6 7 8 |
uses Dateutils; .... Procedure JavaIntToDateTime(input : Int64) : TDateTime; Begin Result := DateUtils.UnixToDateTime(input div 1000); end; |
Per ovviare al problema che un socket rimane occupato con una connessione Tcp è possibile ovviare al problema configurando come segue l’istanza di una classe TidTcpclient: per effettuare la connessione:
1 2 3 4 |
IdTCPClient.BoundIP := currentIp; IdTCPClient.Port := 5566; IdTCPClient.Host := <server address>; IdTCPClient.Connect; |
invece nel metodo disconnect : uses …. IdIPWatch,IdStackConsts …. if IdTCPClient.Connected then begin IdTCPClient.Socket.Binding.SetSockOpt(id_sol_socket,id_so_dontlinger,id_so_true); if IdTCPClient.IOHandler nil then try IdTCPClient.IOHandler.InputBuffer.Clear; except end; try IdTCPClient.Disconnect;…
Leggi tutto
to generate uid or GUID with delphi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
program Guid; {$APPTYPE CONSOLE} uses SysUtils; var Uid: TGuid; Result: HResult; begin Result := CreateGuid(Uid); if Result = S_OK then WriteLn(GuidToString(Uid)); end. |
Come tutti sappiamo, creare un webServer con Delphi è semplicissimo, cosa meno banale è invece decodificare una post che che contiene un multipart/form-data. Quando una paginetta http esegue una http submit da un form in metodo post, magari con un file in upload il browser genera uno stream codificato in UTF8 in cui ci sono…
Leggi tutto
Toad è un buon client per Oracle, e da qualche anno sul sito di Oracle è disponibile una versione molto leggera del client di oracle che si chiama InstantClient. Il pregio di questa versione di driver/clients per Oracle è che non ha una procedura di setup ed è sufficiente decomprimere il pacchetto compresso in una…
Leggi tutto