Firebird News: Database .NET 9.0 released
Behind the connection: A first look at Delphi for Android
Delphi Haven: FMX TClipboard now supports iOS
I’ve just checked in a revision of my open source FMX TClipboard implementation that has an iOS backend. This supports the current rather than the FPC-based version of ‘Delphi for iOS’, however the Windows and OS X backends still compile with XE2 and above.
In essence, the new code wraps the native iOS clipboard API (UIPasteboard) and presents it in a fashion that closely follows the VCL clipboard interface, just like the existing Windows and OS X support did the same for desktop platforms. For some reason Apple in their wisdom decided to make the iOS clipboard API similar yet randomly different to the OS X one, so even though there’s not masses of code, it was a bit fiddly to implement. Anyhow, I’ve also knocked out a little demo similar to the previous desktop one:
Using (say) Photos, you can copy an image to the clipboard and paste it into the demo. Conversely, you can from the demo itself copy either just the text entered, just the image, both the text and the image as two representations of the same clipboard item, or both the text and image as a custom clipboard format. The ‘List Formats on Clipboard’ button, as its name implies, then lists the formats currently on the clipboard. This is what I get after copying an image from Photos on the iOS simulator:
Technically, the iOS clipboard, like the OS X one, can have multiple items, each with multiple representations. Since the multiple-item concept doesn’t exist on Windows (indeed, it didn’t exist on OS X originally either), my class is only concerned with the first item, which is what most applications only bother with anyhow.
If you want the code, the SVN URL for it and a few other pieces is the following:
http://delphi-foundations.googlecode.com/svn/trunk/FMX%20Utilities/
The core files are now CCR.FMXClipboard.pas, CCR.FMXClipboard.Apple.pas, CCR.FMXClipboard.iOS.pas, CCR.FMXClipboard.Mac.pas and CCR.FMXClipboard.Win.pas, and together they stand alone.
The Wiert Corner - irregular stream of stuff: jpluimers
Something overwrote the Browsing Path of my Delphi XE installation.
Symptoms:
- When debugging a project in “use debug DCUs” mode, the IDE cannot find RTL, VCL and Indy units.
- When you type `System` in a source file, then press `Ctrl+Enter`, the IDE cannot find the source code to the `System.pas` unit.
It was faster to examine the Delphi XE Library registry settings from Ken White than comparing them with a backup or a fresh Delphi XE install.
Now it works fine…
–jeroen
via: Delphi can’t find System.dcu; what should the default path settings be? – Stack Overflow.
Filed under: About, Delphi, Delphi XE, Development, Software Development Tagged: software, stack overflow, technology
Firebird News: New snapshot of Jaybird 2.2.4 with support for: Firebird 3.0 Boolean and Java 8
The Wiert Corner - irregular stream of stuff: jpluimers
While researching some other historic information about Delphi, I bumped into this thread: New DPMI host – delphi.
If is a small thread describing what kinds and versions of DPMI hosts were available to run Turbo Pascal based programs.
DPMI stands DOS Protected Mode Interface: a way for real mode DOS programs to access protected mode features (mainly memory above the 1 megabyte barrier).
I had plainly forgotten that the DPMI host shipped with Delphi 1, and wasn’t aware you could have a 32-bit DPMI host at all.
Some other memory related abbreviations from that era:
- XMS (eXtended Memory Specification) – Wikipedia, the free encyclopedia.
- EMS (Expanded Memory Specification) – Wikipedia, the free encyclopedia.
- DPMS (DOS Protected Mode Services) – Wikipedia, the free encyclopedia.
- DOS extender – Wikipedia, the free encyclopedia.
- DOS memory management – Wikipedia, the free encyclopedia.
- UMA (Upper Memory Area) – Wikipedia, the free encyclopedia.
- VCPI (Virtual Control Program Interface) – Wikipedia, the free encyclopedia.
- HDPMI.
- DPMI 0.9 specs.
Fun (:
–jeroen
Filed under: Borland Pascal, Delphi, Delphi 1, Development, Object Pascal, Pascal, Software Development, Turbo Pascal
twm’s blog: Concatenating pdf files the easy way
I just had the need to concatenate several pdf files to a single one. Since my desktop computer is running Windows, I first tried to download and use some freeware utility. After the first one did not work as advertised and the second one tried sideload some adware I stopped going that path and remembered that I had ssh access to several Linux boxes. So I clicked on the second Google result for “concatenate pdf” and was sent to Doei Doei which gave me the following solution:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf file1.pdf file2.pdf [...]
I had to install Ghostcript (apt-get install ghostscript) for this to work, but after that, I ended up with a working pdf within seconds.
Please, nobody try to tell me again that Windows is more user friendly than Linux.
The Podcast at Delphi.org: Data Visualization with Ray Konopka
I am really looking forward to Ray Konopka‘s webinar on data visualization with Delphi and RAD Studio. Hopefully you will get a chance to join in too!
Join Embarcadero and Delphi expert Ray Konopka to learn about data visualization in a new RAD in Action technical webinar: Data Visualization in Multi-Device Apps with RAD Studio. Conveying the meaning of data quickly and concisely is a focal point of today’s applications. This is especially true for mobile devices where real-estate and user attention are in short supply. Delphi/C++ and the FM Application Platform, along with native code performance, provide the tools necessary to create vibrant, information rich displays.
Seeing is Believing: Data Visualization in Multi-device Apps
Wednesday, August 14, 2013
- 6AM San Francisco / 9AM New York / 2PM London / 3PM Milan
- 11AM San Francisco / 2PM New York / 5PM London
- 5PM San Francisco / 15-Aug 9AM Tokyo / 15-Aug 10AM Sydney
DelphiTools.info: DWScript WebServer in the metered cloud
The Podcast at Delphi.org: Sneak Peak: Android SDK, NDK and Device Support in Delphi
A juicy sneak peak of the Android support in the SDK Manager and Project manager being developed in the beta. This video shows the updates to the SDK Manager to support the Android SDK & NDK. These can be installed and configured automatically, or you can install them on your own and configure them here. Then it shows how easy it is to add Android as a target. The project manager will automatically detect any Android Emulators or devices with USB debugging enabled and provide them as an option.
Be sure to check out the Special Offers
- 6 months maintenance free with new user purchases
- 2009 users get the upgrade price when buying with 1 year maintenance
- bonus pack of extras free
Also sign up for Android news/info and apply to be a beta tester.
Behind the connection: Android application with Delphi
Te Waka o Pascal: A Case of Insensitivity
The Wiert Corner - irregular stream of stuff: jpluimers
I might need this for some really old stuff, so here is a reminder: Unspecified Error in Delphi 2007 on Windows 8 | ACMer.
It does work on Windows 7: Problem installing Delphi 2007 on Windows 7 64 Bit Enterprise – Stack Overflow.
–jeroen
Filed under: Delphi, Delphi 2007, Development, Power User, Software Development, Windows, Windows 8
twm’s blog: A web server as a shell script no a single line
I just found this via Heise online:
Web server in one line of bash
I tried it and it works!
while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; cat index.html; } | nc -l 8080; done
You can replace index.html with any file you happen to want to transfer (also works for binary files).
After executing this, just point your browser to
whateverhostname:8080
and it will start downloading the file or in the case of index.html, will display it.
This is some serious case of genius!
The Podcast at Delphi.org: Sneak Peek: Delphi FirePhoto app on Android
Demo of using the FirePhoto app to take a picture with both the front and back facing cameras on the new Google Nexus 7. Also applying a built in GPU effect to the picture.
- 6 months maintenance free with new user purchases
- 2009 users get the upgrade price when buying with 1 year maintenance
- bonus pack of extras free
Castle Game Engine news: Castle Game Engine 4.1.1, view3dscene 3.13.0 release and more
New 4.1.1 version of Castle Game Engine is released! Along with it, as usual, we release view3dscene 3.13.0, our VRML/X3D browser, and update a couple of other tools/games.
New user-visible features (in Castle Game Engine and view3dscene):
- Mac OS X native look and easy installation. Our Mac OS X programs now have a native look, with typical Mac OS X theme and menu and dialogs. They are nicely packaged in a dmg file, with a Mac OS X "bundle" inside that you can drag to your Applications folder.
This concerns both view3dscene and glViewImage (our handy image viewer, supporting some uncommon formats like DDS). - Network (http) support. We can download everything from the Internet, everything is correctly treated as URL, we also use MIME-types more. For developers new chapter of our tutorial describing network support is available.
- More complete data URI support. Absolutely everything can now use data URI to embed data inside a single VRML/X3D file. There is a demo data_uri.x3dv showing how you can use data URI to embed all kinds of things inside X3D file: textures, sounds, other 3D models (to Inline or Anchor to them), scripts etc.
Engine examples contain a simple tool examples/tools/to_data_uri.lpr that can generate data URI from any file. - Clipboard (Ctrl+C, Ctrl+V, Ctrl+X in message boxes, especially handy to copy/paste URLs). For developers: use Clipboard.AsText property.
- view3dscene interprets Home / PageUp / PageDown / End keys to switch to initial / next / previous / last viewpoint. This is consistent with other VRML / X3D browsers behavior and follows recommended X3D shortcuts, and it makes moving through viewpoints easier, using just a keyboard. Thanks to Don Brutzman for bringing this to my attention :)
- Nice message on status when switching viewpoints. Together with Home/PageUp/PageDown/End combo, this makes switching viewpoints by keyboard very comfortable.
- X3D CAD level 2 support (CADXxx nodes).
- MultiTexture.function support. Demo model.
- NavigationInfo.transitionComplete support. Demo model transition_multiple_viewpoints.x3dv shows how to use it to make an animated transition between a couple of viewpoints.
- Support for 8 and 16 samples for anti-aliasing.
- If you load or save image sequences using the syntax image%d.png, for example inside our extension Movies for MovieTexture can be loaded from images sequence: the new syntax to indicate counter inside the URL is @counter(4), where 4 is the padding. For example image%d.png has to be changed to image@counter(1).png and image%4d.png has to be changed to image@counter(4).png. See previous news for explanation why this change is necessary.
- FullScreen switching much improved: you can now freely change TCastleWindowBase.FullScreen property at runtime. For backends that handle it (GTK, LCL) the switch may happen by resizing the window, instead of recreating it, which means it avoids (sometimes time-consuming) reinitialization of OpenGL resources. On Mac OS X, fullscreen mode hides the dock and menu, so they don't cover the window. Added TMenuItemToggleFullScreen for comfort.
- You can now load material_properties.xml files in view3dscene, will be used to enhance all subsequent materials. You can also specify alpha_channel (see alphaChannel extension) in material properties. I expect to enhance this in the next release, so that you can add there also stuff like TextureProperties (for anisotropic filtering and more, right now you have to edit VRML/X3D to add it, which is not always comfortable when exporting VRML/X3D e.g. from Blender).
Other new engine features, visible only to developers:
- CastleWindow LCL backend. This was used to create native Mac OS X apps now, see Mac OS X notes.
- ApplictionData and ApplicationConfig to get data/config dirs as URLs. On Mac OS X ApplictionData can use data from bundle Contents/Resources/data . See also useful CastleFilesUtils.BundlePath function.
- Nicer TInputListener.Update API, with simple HandleInput parameter. It used to be called Idle, but we renamed it to Update, since this describes its behavior correctly.
- Various improvements to 2D rendering and API. Use SetWindowPos, this will also be portable to next engine compatible with GLES20 (Android, iOS).
- TCastleControl.AggressiveUpdate* are removed. The (simplified and improved) version of this mechanism is now always "on" and automatically makes mouse look work better. (Still not perfect, though. Lazarus event loop still causes problems with mouse look. Use our CastleWindow for smooth mouse look.)
- In all programs (view3dscene and others created by Castle Game Engine) the Home / PageUp / PageDown keys loose their old meaning (they were used to raise/bow/straighten head in Walk, or rotate/reset in 3rd axis in Examine). I think that nowadays, people don't need keys to perform these actions, as rotating with mouse (like mouse look or mouse dragging or scroll wheel) is more intuitive and more discoverable. This way these keys are free to use for viewpoint navigation.
If you would like to restore the previous behavior just for your application, you can of course do it, since all the inputs of cameras remain configurable. Like this:
var Camera: TUniversalCamera; .... { Make sure to create a camera, if none was created yet (SceneManager.Camera is autocreated at first render). The default CreateDefaultCamera always creates a TUniversalCamera descendant, so the cast below is safe, unless you do something non-standard with cameras otherwise. } if SceneManager.Camera = nil then SceneManager.Camera := SceneManager.CreateDefaultCamera; Camera := SceneManager.Camera as TUniversalCamera; { Assign old Home/PageDown/PageUp meanings to Examine and Walk cameras. } Camera.Examime.Input_Home.Assign(K_Home); Camera.Examime.Inputs_Move[2, false].Assign(K_PageDown); Camera.Examime.Inputs_Move[2, true ].Assign(K_PageUp); Camera.Examime.Inputs_Rotate[2, false].Assign(K_PageDown); Camera.Examime.Inputs_Rotate[2, true ].Assign(K_PageUp); Camera.Walk.Input_GravityUp .Assign(K_Home); Camera.Walk.Input_UpRotate .Assign(K_PageUp); Camera.Walk.Input_DownRotate.Assign(K_PageDown);
- Comfortably add modifiers (Ctrl, Shift, Alt) to menu item shortcuts by TMenuItem.Modifiers. Previously it was somewhat-possible (by using CharKey like CtrlA..CtrlZ or uppercase letter, which requests Ctrl or Shift modifier). New approach is much more flexible.
Along with the engine and view3dscene, we also release glViewImage 1.5.0, castle game 1.0.1, demo models 3.3.0.
Future: Jan Adamec has started work on iOS port, you can see his results in ios_tests/ directory inside SVN. And Michalis started work on porting engine renderer to GLES20. If all goes well, this will result in next engine release (4.2.0) being able to use GLES20 on mobile devices like iOS and Android :)
Firebird News: ADO.NET provider for Firebird 3.1.1.0 is ready
Firebird News: Database Workbench 4.4.1 released
The road to Delphi: Introducing The Delphi Dev. Shell Tools
I just started a new Delphi Project called Delphi Dev. Shell Tools the aim of this shell extension is facilitate some common tasks like open, build and edit a Delphi project , as always the project is hosted in the Code Google site and you can checkout the full source code using any Subversion client. Let me know any comment or suggestion via this blog, to report any issue or suggest a new feature please use the issue page of the project.
Installer
Download the installer from here
Common Tasks for .pas, .dpr, .inc, .pp, .dpk, . dproj, .frm, .fmx, .rc extensions
- Copy file path to the clipboard : Copy the path of the selected file to the clipboard.
- Copy full file-name to the clipboard : Copy the full file-name (Path + Name) of the selected file to the clipboard.
- Open In Notepad : Open the selected file in the notepad editor.
- Open In associated text editor : Open the selected file in the associated text editor.
- Open cmd here : Open the cmd.exe application in the folder of the selected file
- Open RAD Studio Command prompt here : Open the RAD Studio Command prompt (of any installed Delphi version) in the folder of the selected file
- Format Source Code : Format the source code using the formatter.exe tool (included since Delphi 2010)
- Run Touch : Executes the touch.exe tool
- Open with Delphi(N) : Open the selected file with any version of Delphi or Rad Studio installed
- Compile resource file : Compile the selected file (.rc) with BRCC32.exe tool
Specific Tasks for .dpr, .dproj files (Rad Studio Projects), .groupproj (Group Projects)
- Run MSBuild (Default Settings) : Execute MSBuild using the default settings of the selected .dproj file
- Run MSBuild With .. : Execute MSBuild using any of the platforms and targets detected in the selected .dproj file
- MSBuild: Allow to select and execute the MSBuild tool (associated to any version of the RAD Studio installed) using the default configuration of the project
TODO
- Lazarus support
- C++ Builder support
- Custom MSBuild actions
- Add checksum calculations
The Podcast at Delphi.org: How Delphi and C# Are More Alike Than You May Know
With the upcoming release of Delphi support for Android there is a lot of interest from developers who are not currently using Delphi, most notably C# developers. Delphi provides a great solution for sharing as much of your source code, skills and development efforts as you want across the 4 major platforms, while still building high performance, native applications.
Delphi and C# are more alike than most people realize. I am doing a webinar to that end: “A Common Ancestry: How Delphi and C# Are More Alike Than You May Know.” It is the first in a 3 part webinar series called You Can Bring it With You: Leverage Your .NET Expertise in an iOS & Android World. The other two webinars are “From One Framework to Another: Leverage Your .NET Investments for iOS and Android Development,” and “Mano a Mano: A Survey of Mobile Development Options for .NET Developers,” by Marco Cantu and John Thomas, respectively.
The webinars start Tuesday, August 27th, with two a day for 3 days in a row. I’m looking forward to seeing everyone online. If you have a specific question you can leave it here and I may be able to incorporate it in the webinar, if not then I will be sure to cover it during the live Q&A.