Quantcast
Channel: Planet Object Pascal
Viewing all 1725 articles
Browse latest View live

Delphi Code Monkey: Windows 8 user interface is useless on tablets. And useless on desktops. So it's just useless.

$
0
0
As a case in point for how useless Windows 8 is on a tablet, consider the common source of confusion since version 3.5 of Windows NT, when a printer queue is paused.  First users don't think about printer queues and so the idea of them as paused, is unnatural to users.  Secondly, Windows has never improved its print queuing.  First the queue itself (the list of documents awaiting printing) is hidden away in a sub-window, even in Windows 8, and secondly, the means of resuming is hidden in a pull down menu in a sub-window.

I can tell you how this happened. Incompetence. I'm not talking about the developers here.

I'm talking about the incompetence of Sinofsky, who has now been fired because he did too much too fast, rather than being fired for the reason he who should have been fired, which is for not rebuilding Microsoft more boldly than he attempted to.

Sinofksy had to fight the inertia of a giant organization, a giant codebase, and a lot of internally warring stack-ranked factions at Microsoft, and thus, in the end, I blame the incompetence of Steve Balmer for not giving Synofsky carte-blanche to rebuild the Windows organization as he saw fit..

Again, let me be clear. The incompetents working on Windows 8 that I am referring to are the now-fired Synofsky, and the still-CEO Ballmer, who created the toxic stack-ranked corporate culture and the internecine warfare style of company management  that in turn gave us the worst version of Windows ever, Windows 8.





P.S. If you're curious, the new Settings UI in the "Modern" (Metro) part of Windows just dumps you out to the desktop Printers and Devices pane, and there is no "modern" UI for working with printers yet. 

The Wiert Corner - irregular stream of stuff: jpluimers

$
0
0

The comment thread at via The Oracle at Delphi » Give in to the ARC side is very interesting.

So soon after writing a StackOverflow answer on Delphi Memory Managers yesterday, this one by David M (aka vintagedave) caught my eye:

This is unannounced at the moment, but I am working on a new memory manager which does not have a global lock, and is designed for multithreaded usage, including cases where memory is allocated in one thread and freed in another, and many threads are allocating and freeing at once. It also uses a more secure design than FastMM4, which may be important for world-facing code, eg web servers. It’s a personal project which I have not yet announced, but if you are interested (Allen, Guenther, others) please feel free to contact me at vintagedave@gmail.com.

I wonder if it is better than the multithreaded Delphi memory managers I mentioned in the answer:

–jeroen

via The Oracle at Delphi » Give in to the ARC side.


Filed under: Delphi, Delphi XE4, Development, FastMM, Software Development Tagged: computer, memory manager, memory managers, software, technology

The Wiert Corner - irregular stream of stuff: jpluimers

$
0
0

I had a bit of trouble getting into CodeRage Mobile: somehow the confirmation email never reached the pluimers.com servers. After retrying today, @EmbarcaderoTech sent a GotoMeeting link that worked.

Later I will try to trace back about the mail issue (:

I’m in now, and since I usually loose the QA information, here is a dump of the QA for today so far.

Will try to find time for post editing and getting the URLs clickable.

Welcome to CodeRage Mobile!

Audience Question
Q: Hi Good Evening from Bangalore India
A: Welcome

Audience Question
Q: Hi. I need to develop an iOS application on a Windows based laptop and port it to an iPad via a MacBook. Is there an iOS for Dummies type booklet that you can point me to, please?
A: There are several sources of info to help you: http://docwiki.embarcadero.com/RADStudio/XE4/en/IOS_Mobile_Application_Development and also the iOS Tutorials page at http://docwiki.embarcadero.com/RADStudio/XE4/en/IOS_Tutorials:_Delphi_iOS_Application_Development

Audience Question
Q: Hi. I need to develop an iOS application on a Windows based laptop and port it to an iPad via a MacBook. Is there an iOS for Dummies type booklet that you can point me to, please?
A: We also have a 133 page Delphi iOS tutorial eBook (PDF format) at http://docs.embarcadero.com/products/rad_studio/radstudioXE4/iOS%20Tutorial%20en.pdf

Audience Question
Q: Does the combination of MacInCloud and TestFlight make it possible to test on my iPad without owning a Mac?
A: Yes

Audience Question
Q: Will the question/Answers log also be available later?
A: Parts of the complete log will be made available – the parts with the technical bits and links to additional info.

Audience Question
Q: We Loved FireMonkey and one code for all platforms is a good way, and I can feel you why u want to drive to mobile. But on the otherhand, FM must be powered on windows side as VCL and still needs updates, fixes etc. When u think it will be better than VCL ?
A: We are in the 3rd generation of FireMonkey with enhancements, refactorings, improvements and more capabilities for Windows, Mac and iOS – and this year for Android too.

Audience Question
Q: Does the combination of MacInCloud and TestFlight allows to debug an iOS app?
A: Yes – you can develop and debug using the iOS simulator running on Macincloud. You won’t be able to debug on the actual iOS device without a Mac – as far as I know.

Audience Question
Q: good morning. If I create an app for ipad, iphone,…and is available at itunes, how are updates handled? Does my app on every device need to look for updates through code, or does itunes push updates to all clients? thank you.
A: Anders will talk about this at 12noon PDT today. You update your app and if it is accepted into the Apple App Store – then all of the iOS devices that have already installed it will get a notiice (via a “”badge”) that there is an App update available. You can also see updated apps if you run iTunes.

Audience Question
Q: Amazing stuff y’all :) learning a lot!
A: :D

Audience Question
Q: I agree, amazing stuff. I’m excited to start using my new tools!
A: Cool!

Audience Question
Q: I will be releasing 4 to 5 apps in the next month or so, build with delphi, will be great to see them live, delphi is still the greatest!
A: That will be awesome!!!

Audience Question
Q: Their names are Truth Matters App, Earth Matters App, Health Info, DA uploader(Datasnap app), and possible another but that will be a little later! I will let you guys know when it is done!
A: :D

Audience Question
Q: Alle Apps with the FIREMONKEY tag?
A: :D

Audience Question
Q: I missed yesterday, will watch the replays, so if this was covered sorry. If I write and app using a datasnap server(to access MS SQL) what would be your advice for getting the app approved by apple? run a test instance on a amazon ec2 machine and give apple acces to it?
A: Yes – you will need to have the DataSnap server available for Apps to use and for Apple to test.

Audience Question
Q: I just wanted to make sure I let you know that this webinar is both excellent and essential. Keep up the good work.
A: :D

Audience Question
Q: It’s amazing stuff!!!
A: :D

Audience Question
Q: For info : OSX Mountain lion has a lot more instruments available than the verison shown on the presentation
A: Yes. Full operation system has more sensors and functionality.

Audience Question
Q: When I asked my question about memory allocation failing, I meant what would happen programmatically? The answer “The application crashes” Isn’t useful.
A: You get a Delphi exception! Put a Try/Except/End to handle each exception. iOS apps will crash on unhandled exceptions.

Audience Question
Q: What happens when the allocation of memory fails?
A: exception is raised and if not handled, the app will crash.

Audience Question
Q: OK, you’ve you’ve just answered my question in the webinar. Thanks…
A: :D

Audience Question
Q: Instruments off of 4.6.2 is found off of the XCode program under the Open Developer Tools.
A: Yes. THanks.

Audience Question
Q: Do you have to close down the app on the iPhone or just put it in the back ground before starting it from instruments?
A: The instrument(s) start the app you are instrumenting.

Audience Question
Q: This is GREAT! I can’t wait for the replay!
A: :D

Audience Question
Q: What are the advantages of analysing the display brightness?
A: SOme applications, for example, the German Railway app – the brightness uses more power. More brightness means more battery use.

Audience Question
Q: Das ist Wunderbar Daniel :) – Schon Demo (y) Vielen Danke ;)
A: :D

Audience Question
Q: Can I make calls to instruments from Delphi code? For example for tracing purposes?
A: Not sure. Have to look and see if there is an API into the instruments system.

Audience Question
Q: Quick q, when you try to build a Release version, do you see any performance enhancement in Instruments? As we know Debug is larger .app than Release version. Thanks
A: Yes- you can analyze it.

Audience Question
Q: with the upcoming Android integration, is there a similar tool to ‘instruments’?
A: Not sure if the Android SDK has an instruments like technology.

Audience Question
Q: I find the graph for memory allocation kinda useless. As the memory allocation increases, the graph scales down, but there is no vertical axis to show the scaling?
A: You can scale the graph. Use the mouse to select the time frame and it will zoom. Left side of Instruments screen to adjust the zoom factor.

Audience Question
Q: Great souce of informationa. Great
A: :D

Audience Question
Q: Hi D’s! if you have 3 or more forms with memorymonster how to react in the appevent and inform all Forms created the memory?
A: Within App Event handler – do whatever you need to do in your app to free memory.

Audience Question
Q: Thanks for the answer.
A: :D

Audience Question
Q: I thought XE4 didn’t require the use of XCode.Am I misunderstanding something?
A: XE4 only needs header files, libraries and command line tools. If you want to use Instruments then you need Xcode.

Audience Question
Q: Again thanks for reply about the Brighness.
A: :D

Audience Question
Q: Thanks (y)
A: :D

Audience Question
Q: Thanks Daniel * 2 for a great Demonstration!
A: :D

Audience Question
Q: Thanks, for the answer about the memory allocation graph. I didn’t realise you could do that.
A: :D

Audience Question
Q: Well DOne.
A: Absolutely!

Audience Question
Q: What is the language of Delphi-Tage, German or English?
A: Most sessions are in German. Some in English – depending on the presenter. Take a look at the session list when we get closer to the event. The call for papers is now active for session submissions.

Audience Question
Q: what a lovely webinar :)
A: Thanks

Audience Question
Q: Will you send all the slide presentations for both yesterdays & todays to my emailid?
A: You will receive email pointing you to all the video replays wth live Q&A on the end.

Audience Question
Q: Not me though – and a lot easier may be illigal then but i did buy an extra license to do this, and hacked vmware so the osx option is visible to install osx
A: as far as I know this is legal only in some countries

Audience Question
Q: I don’t think you need a physical mac as i use vmware with OSX 10.8.4 and deploy to device and simulator and store all the time
A: as far as I know this is legal only in some countries

Audience Question
Q: I missed the web site for the last presenter. Something like http://www.developer-expert.net What’s the correct URL?
A: http://www.developer-experts.net/

Audience Question
Q: Is it possible to do this RSS feed example on Windows with C++ Builder ?
A: Yes – XE4 has same support for Project Indy and ListBox components.

Audience Question
Q: Why all the ChildNodes have red error underlines?
A: Phantom code insight error insight. When you compile they go away. These are false indications.

Audience Question
Q: where is the source
A: Older VCL version code is at http://code.marcocantu.com/p/delphirestclients/source/tree/HEAD/RssClient/RssClientForm.pas

Audience Question
Q: I love Marco’s printed books. Anything coming for XE4?
A: Marco is busy with other things but is blogging a lot of content.

Audience Question
Q: where is the source
A: Marco will provide – keep in touch with his blog.

Audience Question
Q: ty for the answer. Source would be nice cuz it was very fast here :)
A: :D

Audience Question
Q: Is this demo using the full appilcation, or the free app?
A: Embarcadero edition – XE4 registered user download

Audience Question
Q: is the firemokey grid component available on IOS?
A: http://www.midaconverter.com/firemonkey/upgrade.asp

Audience Question
Q: Will Mida substitute a FMX Mem table for a TClientDataSet?
A: Mida Basic edition leaves the ClientDataSet alone. Check Pro and Studio edition features for choices to do more conversions.

Audience Question
Q: When TWebBrowser will be available for C++ Builder FM as VCL ?
A: Available for iOS for now. TWebBrowser takes advantage of the fact that WebKit (from Mozilla) is built into the OS on iOS and Android. On Windows – there is IE (ActiveX) and Chrome Runtime Facility. R&D is looking into one of the open engines that are multi-platform.

Audience Question
Q: This prob isn’t the right session to ask thei question, but here it goes: I’m trying to test my 1st FM mobile app on my Win7 computer. I have the paserver running locally, but I can’t get the simulator to run the program. How do you run a local simulator for IOS apps on a Win 7 box?
A: iOS Simulator and Xcode command line tools and libraries are only available to be run on a Mac – legally :D

Audience Question
Q: In Indy 9 there was a component for web browsing
A: Project Indy components are available on WIn, Mac and iOS.

Audience Question
Q: Does the MIDA converter offer to view changes, before commiting, i.e. are incremental changes allowed, or all or nothing?
A: it converts into a separate folder, adds comments and creates a log file.

Audience Question
Q: but can we attach a Device to MacinCloud?
A: Not currently – but they are investigating.

Audience Question
Q: So I can’t actually deploy to my iphone when using macincloud???
A: That’s correct for right now. Ask the Macincloud people what more they are working on for getting to your device.

Audience Question
Q: Look for tHtmlViewer or tFrameViewer or tFrameBrowser
A: OK

Audience Question
Q: Can you preserve the image in the conversion, or reload it afterwards?
A: MidaConverter creates a new project and units in a separate folder. Your VCL app is untouched.

Audience Question
Q: Is ReportBuilder one of the reports that can be converted in the Studio version?
A: Quick Report to Fast Report for now. Ask Mauro and he will most likely add features like he has done all the time since FMX appeared in XE2.

Audience Question
Q: I bought a used MacBook (late 2007) for $300, and it works great. You don’t need the latest and greatest Mac OS for Delphi development, at least not at the moment. I highly recommend getting a Mac, because there is a lot to learn about the Apple way of doing things that you just won’t understand otherwise.
A: :D

Audience Question
Q: Does MIDA handle TDataModules?
A: Yes

Audience Question
Q: And TFrames?
A: Yes

Audience Question
Q: I downloaded RSSClientForm.pas and used the code in a firemonkey desktop app. On Update click -> “HTTP/1.1 302 FOUND” message
A: You need to turn on allow Re-Direct”option in HTTP component.

Audience Question
Q: Is there anything out there to convert Rave reports to FastReport?
A: Fast Report has converters from RAVE, Quick Rerports etc.

Audience Question
Q: I’m migrating core graphics, chess programs using the Graphics32 library. Can you give me a link to an overview of FM low level graphics?
A: Canvas at the lowest level

Audience Question
Q: What do you do about converting DevExpress grids to Firemonkey?
A: Talk to DevExpress to see what they are planning for FireMonkey. Also check out the TMS Software Grid for FireMonkey!!!

Audience Question
Q: Do you plan to add some method in Application object onder iOS to catch events like mobile dvice is going to sleep to managed saving actual apllication status or reinitialize apllication as well?
A: There are additional events you can hook on iOS to handle other events. Anders Ohlsson covers this is his sessions and BLog.

Audience Question
Q: It seems that everybody has this error (Shown in all videos) [DCC Hinweis] H2596 ld: warning: can’t parse __DATA/__objc_imageinfo section in C:\Users\Frank Lauter\Documents\RAD Studio\SDKs\iPhoneOS6.1.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation

A: It is just a warning.

Audience Question
Q: it is very nice to see components like TeeChart works on iOS as same as in Delphi/C++ :)
A: :D

Audience Question
Q: on the maps can you use gps coordinates?
A: The TeeChart maps are a standard format. They follow latitude and longitude coordinates. These are converted to pixel positions – there is a function to do this. Steema has VCL demo – but would be easy to do with FMX too.

Audience Question
Q: Can a Donut chart be nested inside another, larger, Donut chart; creating a Segmented Slice (e.g., a Circumplex)?
A: Yes – it is possible but you need to create several donut charts and then manually place them inside the donut hole (and as a percent).

Audience Question
Q: Do the Te Charts also work on iPad, and Windows?
A: Yes – on Windows (VCL or FMX) and on Windows/Mac/iOS (FMX).

Audience Question
Q: what does a one year subscription mean?
A: inlcudes access to support, updates (minor/major) in the one year. you can choose to subscribe/renew if you want. the license is perpetual.

Audience Question
Q: and are the gauges only available in the PRO version VCL/FMX?
A: http://www.steema.com/featurematrix/vcl

Audience Question
Q: If I want to visualize data changes over time (ie: a kind of animation), can I manually feed the changing dataset to the chart and control when and how it refreshes/updates the display?
A: If you are using LiveBindings or their DBChart – then refreshing is automatic. Uses onDataChange event.

Audience Question
Q: do all the gauges work with IOS?
A: Yes

Audience Question
Q: Related to the “visualize data changes” question: does the data need to be in a database, or can it be manually fed in somehow?
A: Yes

Audience Question
Q: thanks
A: :D

Audience Question
Q: Thank you David I. & David B. for answers :)
A: :D

Audience Question
Q: With the maps, could counties be shown too for other countries than US states ? And is it simple to make new maps?
A: Steema is using Map files as resources. You can load from file or load from resource additional map files.

Audience Question
Q: will the new ios7 look will be supported by delphi xe4?
A: Yes – when iOS 7 is released.

Audience Question
Q: Is TeeTree stilll included?
A: Yes – TeeTree is included in the Pro version for VCL and FMX

Audience Question
Q: Please post David’s email
A: info@steema.com

Audience Question
Q: That was great….
A: :D

Audience Question
Q: I have Delphi Pro with the mobile studio, is there is a demo I could use with this version
A: http://www.steema.com/featurematrix/vcl

Audience Question
Q: any idea if other gauges will be supported / introduced in future – like thermometers, traffic lights etc as available (for example in RGraph?
A: Steema is always adding additional charts/graph types!

Audience Question
Q: Can you draw free drawings using real world coordinates like in Borland Pascal Object Graphics?
A: TeeDraw – like a canvas/paintbox that lets you draw more. Also check out TeeTree for a list of objects.

Audience Question
Q: (OGL by WhiteWater)
A: OK

Audience Question
Q: is ADO components works with TeeChart on iOS to connect a DB ?, cuz we use them on windows now. and what about Firedac or any other DB compenents ?
A: For Windows specific databases and ADO – you will need to create a DataSnap server or Windows Web Service to get to Windows side from other platforms.

Audience Question
Q: Good presentation, and very good product
A: :D

Audience Question
Q: thanks
A: Awesome!

Audience Question
Q: when the andrioed version will be released?
A: This year.

Audience Question
Q: yes presentation and product is very great and we use it successfully on windows apps now
A: :D

Audience Question
Q: So time for some general questions?
A: You can always put questions in

Audience Question
Q: When start next conference?
A: today at 9am PDT is the next session. Next major coderage online conference will be in October/November/December time frame. we will let everyone know.

Audience Question
Q: TCube(Img)…Material.Assign(Cube1.Material) works fine. However when I move the Point3D to the next TCube(Img) the previous TCube(Img) reverts back to original TCube(Img).Material. What I am I not doing in order to keep the previouss changed TCube(img).Material change?
A: Each cube needs a material source.

Audience Question
Q: I brand new to cloud, and since I need one to host a datasnap for me, what is better,easier,cheaper, and works best with Delphi IOS Amazon or Azure??
A: I am not sure about the pricing these days. YOu need to compare pricing for Amazon EC2 windows instances (micro-instance is the cheapest) versus Microsoft Azure Application instance.

Audience Question
Q: ;-) 1.) This online coderage is great… But I think some Q&A hours with the EMBT Experts to ask questions would also be nice to…
A: Good suggestion for a future coderage – an ask the team session!

Audience Question
Q: can you have more youtube videos with DataSnap and Visual Live Binding! thank you
A: ok – will ask Pawel Glowacki – the DataSnap expert to do more videos.

Audience Question
Q: You may be able to get a Micro EC2 instance for free if you choose a spot instance
A: Thanks

Audience Question
Q: 2.) to be cross-plattform to andriod it would be nice to have informations about the Android-FM-Way because at this moment “we” all have many ios relatet things in our app and we don’t know what to do with empty {$IFNDEF IOS} ??? {$ENDIF} stuff… Apps are growing fast so if the android stuff is very differnet we can rewrite the apps totaly…Again… a date would be nice… ;-)
A: If you have XE4 you will be invited to join the Field Test for Android. that will be the best way to get up to speed on all that FMX 3 does already for multi-platform. Of course there can be some ifdef(s) for platform specific code. YOu can also explore the device and platform services interfaces that were added in XE3 and updated in XE4 to query what is available on each platform and use the FMX interfaces for cameras, location, menus, dialogs, canvas, screen, mouse and other services.

Audience Question
Q: I missed the earlier session by Marco on VCL to iOS – is there any video being captured & a way to view it afterwards? Thanks.
A: Video replays will appear as links off the CodeRage Mobile page someimt Thursday and this weekend. I will also blog about the replay links and where to watch on youtube and download from Code Central.

Audience Question
Q: How convenient is the starting time from 6:00 AM for most participants, who have to be at work or other engagements in this very relevant, topical enterprise mobility seminars?
A: When would the right time be in the world and for each attendee?

Audience Question
Q: i need to create an android app, can i start developing it in ios then switch to android when released?
A: Yes

Audience Question
Q: Would like to see more datasnap demos on different DBX SQLcomponennts like showing use of embedded procedures and what is important when setting such components up.
A: Pawel Glowacki’s Delphi Labs DataSnap has 11 tutorials with video, white papers and source code projects. Easily found with Google search.

Audience Question
Q: when will be the beta field for android started?
A: I don’t have a date right now. Development continues.

Audience Question
Q: will fmx controls work with iOS 7? Or is needed some upgrade ?
A: This depends on what changes Apple makes to iOS APIs and Services between now and when iOS 7 is finally released this fall. At a minumum we will provide updated iOS 7 standard style files. Of course we will also provide support for new or changed APIs. The first iOS 7 beta was only released last week.

Audience Question
Q: A litte off-topic. Could a HTML 5 builder app on iPhone be able to communicate with sensors? Like press a button and long/lat could be sent back to webserver?
A: HTML5 Builder provides components for JQueryMobile which gives you access to mobile (iOS, Android, BlackBerry, Windows Phone) sensors, files, services, etc.

Audience Question
Q: Or do the same on a Windows Mobile 7.5 or 8?
A: HTML5 Builder supports Windows Phone.

Audience Question
Q: way out off topic… i buy a macbook pro 16GB 512 SDD hdd. What more i need to work with XE4 on that machine?
A: install the PAServer on the MAc. Install latest Xcode including the command line tools. You can also use a VM to install windows guest operating system on the MAc and the XE4 IDE. or you can use your Windows PC with XE4 IDE and talk to the Mac via IP address and Port.

Audience Question
Q: Nice !
A: :D

Audience Question
Q: Video feed stopped?
A: still running on my two other PCs that are monitoring the GTW feed.

Audience Question
Q: I have XE4, Professional with Mobile.
I created an application for 32-bit Windows in Delphi XE2 using TeeChart and TFastLineSeries.
When I’am openning the project in XE4 it shows:
“Class TFastLineSeries not Found…”
A: When you migrate a project between versions, sometimes you need to make sure the Packages are using the right versions. One way is to drop a XE4 3rd party component on the form and then the packages will be updated to be using the right versions. The other way is to use the Project | Options | Packages and Runtime Packages to make sure you get the right Package versions used.

Audience Question
Q: What is a good resource for getting information on the file structures and how they should be used for OSX(MAC) and IOS(iPhone) when creating an app?
A: Apple developer documentation should give you info about files and structures for iOS. I will explore addtiional documentation links fo ryou. Some parts of the iOS file system are hidden.

Audience Question
Q: can be used this components to access apple icloud documents, contacts, etc?
A: Currently TMS has two sets of components – one for VCL and one for iOS. VCL can get to calendar and contacts. There are also iOS Apis to access directly.

Audience Question
Q: does this sample come with the TMS Cloud product demo
A: There are several demo applications available in the XE4 registered user download page as part of the TMS Cloud Pack for iOS.

Audience Question
Q: Fantastic, Bruno, thank you!are these could components
A: :D

Audience Question
Q: Are new TMS ‘ICL’ components iOS-specific?
A: Yes – these are native components for your FireMonkey apps.

Audience Question
Q: Are these components exclusive to iOS? Can’t they be used on Windows/Mac?
A: Not yet. On the VCL side all is working. For FireMonkey – currently targeted at iOS because the components need access to a WebBrowser which iOS has with WebKit RTL. FireMonkey TWebBrowser component is only for iOS right now (and Android this year). Embarcadero is still looking for TWebBrowser component for Win/Mac.

Audience Question
Q: It seems the cloud components with the new offer don’t include any source code, so they are not the full Ios cloud component set ?
A: Upgrade to TMS Software cloud pack for iOS to get the source code!!!

Audience Question
Q: don’t forget to blank out the entries in the .ini file before sending the source!
A: :D

Audience Question
Q: any way to check the status of the push?
A: Depends on the cloud service itself. Most will return an HTTP error if something goes wrong and the components catch that HTTP error response. If the cloud service returns status in JSON package. TMS components check what it can as a HTTP response from the cloud services if there is something returned.

Audience Question
Q: what about the TMS Pack for IOS?
A: Yes!!!

Audience Question
Q: Is it possible to make an app that actually uses the end-user regular twitter/facebook/linkedin account to access the webservices? (instead of using my “app developer” account)
A: In the demo Bruno used his account, but that is not the case in reality. Bruno also had a demo that did a login request – he could have used other accounts for the cloud services. If you deploy into an app store – each user would use their account to authenticate/authorize

Audience Question
Q: Are the post events (e.g TweetWithMedia) thread safe, so you can do them in the background?
A: Right now they are not thread safe. This is a to do item to make it an option to make them synchronos or async

Audience Question
Q: Since iCL is iOS-specific, does that mean there will be an additional, different set, that do the same work, for Android?
A: No answer right now. Sent requests to TMS if you want additional functionality. Stay tuned :)

Audience Question
Q: Can I upload and download a sqlite file from dropbox and make changes and then upload it?
A: Yes

Audience Question
Q: Thank you for the explanation (about the browser lacking in FMX). That is such a pity, let’s hope for XE5.
A: :D

Audience Question
Q: I loaded the components up and dont see any demos in the tms ios directory are they located somewhere else ?
A: users/public documents/tmssoftware/tmscloudpackforios – a different directory from where the components are installed :)

Audience Question
Q: Instagram /vine and other services in the future ?
A: YEs – of course – more cloud support all the time. Instagram is working in the TMS offices.

Audience Question
Q: how hard are they to extend to different cloud services as they come along ?
A: Yes – also looking at FourSquare. Give TMS feedback for what you are interested in.

Audience Question
Q: yayyy there is an early programmer crying there :)
A: :D

Audience Question
Q: :) excellent !
A: :D

Audience Question
Q: Thanks for the programmableweb link :-)
A: :D

Audience Question
Q: any idea if you will be developing your FMX grid to support grouping like dbexpress? (ie: drag column up to grouping area)
A: On the feature request list. RIght now, team has been busy with cloudpack and ICL.

Audience Question
Q: So, which set to use for Mac?
A: TMS PAck for FireMOnkey

Audience Question
Q: what is the difference of the set TMS Pack for Firemonkey XE2 version and now for XE4?
A: Go to the TMS PAck for FireMonkey page where the version history ! http://www.tmssoftware.com/site/tmsfmxpack.asp?s=history

Audience Question
Q: Your link to the Delphi for iOS Kick Start that was published to Delphi Feeds is incorrect. It was http://blogs.embarcadero.com/stephenball/2013/06/18/delphi-for-ios-kick-start/ and probably should be http://blogs.embarcadero.com/stephenball/2013/06/18/delphi-programming-kick-start-ios/
A: Not sure what the Delphi Feeds problem was. the stephen ball blog is live and showed a picture of a face to face hands on workshop he did in the Maidenhead UK office for 20+ developer. This was derived from a 2 day programming workshop I did in Denmark April 30-May1 with the Dapug group. We plan to do more of these in our offices and also are considering an online version this summer (Summer School in the northern hemisphere, Winter School in the southern hemisphere).. No plans for a face to face conference in the uS. THere are other devleoper conferences in some countries – Delphi Tage (Germany), Developer Conference (Sao Paulo Brazil each October/November), Japan Code Camp each quarter in Tokyo or another city, etc. We will have a full produce line CodeRage 8 this fall (sometime in October to December time frame).

Audience Question
Q: It sounds to me like TMS and Emb are using the word ‘Native’ diferently. Is this correct?
A: We use “native”in several ways – all consistent. There is Native Optimized Machine Code compilers. There is Native Controls/Components that directly interface to APIs and controls on Mac, iOS and even on Windows (VCL is an example on Windows). FMX3 on iOS for example gives you native DataPicker if you use the TCalendarEdit control (on Windows it brings up a normal calendar edit). Using TComboBox on iOS brings up a custom picker – on Windows and Mac it presents a normal combobox :)

Audience Question
Q: excelent, thank you!
A: :D

Audience Question
Q: David, is there any talk at Emb for another World-wide conference?
A: NO plans currently. We have live face to face events locally in more than 100 cities around the world each year.

Audience Question
Q: There is some bad news here. Google has started a new Fork for WebKit.
A: Not necessarily a problem – if Google gives us a faster/better WebKit on all platforms and preserves the interfaces and adds extensions – then we would be able to have TWebBrowser component for FireMonkey on all platforms :)

Audience Question
Q: Question on TMS HTML control: Seeing some problems in dev. Any plans on updating/enhancing this?
A: If you have any issues – contact TMS support directly.

Audience Question
Q: are there plans for a component similar to VrTrackbar for FireMonkey iOS?
A: TTrackBar in FireMonkey can have a horizontal and vertical orientation

Audience Question
Q: Sorry but I loose track of your presentation when the iOS app logged in the services. Does authentication take place in the app or it launchs the default associated application in the device?
A: Authentication takes place when you connect to the use the service. You still have to make sure your app is known to the service.

Audience Question
Q: lve binding designer is present on XE4 professional?
A: Yes. But you need Enterprise or above, RAD Studio or Mobile pack for the mobile side of things.

Audience Question
Q: I looking for a solution to persist user data (.ini files) on the device, but with clientdataset and xml is great! thank for this idea!
A: You can use INI file. Just use the same code for getting the path :-)

Q: Nice question on StackOverflow today:

Q: On Android / Eclipse, I can place files in e.g. assets folder. Can I do something similar in Delphi XE4 for iOS? i.e. create a folder where data and image files can placed and automatically built into app? I know I can have images, txt etc. in the form file, but is not what I want if I can avoid it.

Audience Question
Q: Are there any examples of creating custom ListViewItem’s?
A: Hi, this is Sarina. I showed some during yesterday’s webinar and we will have some examples available soon on our SourceForge directory

Q: Thanks! If you have time, please put an answer here: http://stackoverflow.com/questions/17193344/delphi-xe4-with-ios-addon-how-to-embed-files

Audience Question
Q: How do you load a form in with a transition? I’ve tried TForm.Create() etc, but it just appears, can’t see a way to get it to slide in..?
A: You can use a TabControl and animation tabs – take a look at the TabbedSlider demo app. You can also create a form off screen and use a FloatAnimation (2 of them) to animate (Change over time) the Position X and Y of a form to bring it into the display. Apple UI guidelines asks you to make sure the appearance is smooth. Better to use TabControl and Tabs for multiple forms on an iOS device.

Audience Question
Q: what resolution have the mac you are using?
A: some use 1440×900, some use 1280×1024. If you have retina then you can have larger resolutions and it also depends on what projector or monitor you have connected.

Audience Question
Q: Plans for implemennting the webkit for Firefox ?
A: R&D is looking for what to do to have TWebBrowser FMX component work on all target platforms beyond just iOS and Android.

Audience Question
Q: Can send a SMS from un application with a text in a body ?
A: Please see http://docwiki.embarcadero.com/Libraries/XE4/en/FMX.MediaLibrary.Actions.TShowShareSheetAction

Audience Question
Q: I am not asking for the application code, but is it possible to get ‘masked’ code of the threading stuff, so we all don’t have to call Jaim Tirney?
A: Stephen will blog and point everyone to the project code. stay tuned to his blog.

Audience Question
Q: If you use tabs, instead of individual forms, to get transitions, how does this cope memory wise (I’m thinking 20+ tabs). Are all the tabs contents loaded immediately or only when shown?
A: Apple UI guidelines are not to have more than 5 tabs (these are tabs with visible icons/text. you can have tabitems that don’t have a tab button – you can set tpNone and have each tabitem appear using program control.

Audience Question
Q: bevor start the sharesheet
A: http://docwiki.embarcadero.com/RADStudio/XE4/en/IOS_Tutorial:_Taking_and_Sharing_a_Picture_in_an_iOS_Application

Audience Question
Q: how to check if there is a Printer in the sharesheed?
A: http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE4/

Audience Question
Q: can I apply filters to video in realtime and save/upload that ?
A: Not currently for video. Filters are only for image bitmaps for now.

Audience Question
Q: hint: the sample folder after install can be very easy automatic svn update like tortoise from the file explorer
A: :D

Audience Question
Q: I’m not really thinking > 4 visible tabs, I’ve just got a lot of forms to show, but I want them to slide in… but I don’t want to run out of memory..
A: You can create and destroy forms in code dynamically to save memory.

Audience Question
Q: can video be shown /recorded onto a 3d plane ?
A: No 3d Video for now.

Audience Question
Q: Can I apply filters to video in realtime and save/upload that ?

A: Answered already – filters are for image bitmaps for now.

Audience Question
Q: cyberlink dvd
A: ok

Audience Question
Q: Thank you Sarina – Bernard
A: :D

Audience Question
Q: can I test if a printer is available?
A: iOS API call to test if a printer is available.

Audience Question
Q: Need to try airprint? I found a tool to share Mac printers via airprint called HandyPrint from http://www.netputing.com/
A: Thanks

Audience Question
Q: that was another nice presentation, ty again
A: :D

Audience Question
Q: its possible to convert 2d to 3d with shutter glasses.
A: :D

Audience Question
Q: Q: Can I apply filters to video in realtime and save/upload that ?
A: you can get a frame from camera component and apply any fmx filters on it
A: You can grab bitmaps as the TCameraComponent has a full frame buffer and do whatever you want with the bitmaps, image effect them, send them somewhere, combine them etc. The Camera IOS Code Snippet shows you how to capture a bitmap frame at a time as it appears in the camera

Audience Question
Q: Re 3D video, couldn’t you put the video on a layer and manipulate the layer in 3D?
A: you can do all sorts of things via the iOS APi. If you use the FMX TMediaPlayer component it can only play video on a HD (2D) layer.

Audience Question
Q: Is there an example on video playback? or play video from videos directory of the ios device?
A: There are several examples in the samples folder – both in the FireMonkeyMobile and iOSCodeSnippets folders.

Audience Question
Q: // overlay tranparent
if(array[o] != 0×00) { plot(x,y); }

A: :D

Audience Question
Q: I’m creating them dynamically at the moment, just can’t get them to slide, they just appear, no matter what you set the position.x/y to, so ignore animation..
A: Will have to think how to make sure the form is invisible or off device when you call FormX.show.

Audience Question
Q: Effects are awesome and we use Filters to use or save outputs. There is also ShadowEffect but why there is no TFilterShadowEffect to get output ? or anyway to do save output ?
A: Will pass this along to the team to ask why there is a component but not a lower level shadow effect filter class

Audience Question
Q: Some sdk to read barcodes
A: Yes – there are people doing this and some blog posts – just search on Google. We are also going to continue to develop components and interface units for more iOS APis and devices.

Audience Question
Q: is it just me, or is the current video & audio not lined up? In other words, what I am seeing and what I am hearing are at least 30 seconds off.
A: Not sure what is happening with the GoToWebinar stream. Looks okay on my studio machine but GTW problem?

Audience Question
Q: you need to play the video for about a minute with the audio paused
A: :D

Audience Question
Q: Does Delphi IDE for iOS get installed on pc or mac?
A: Delphi IDE is installed on Windows

Audience Question
Q: https://github.com/ejeklint/Cloudya/blob/master/daemon/WMR100NDeviceController.m#L136
A: Thanks

Audience Question
Q: Yea, it’s odd, they seem to be sort of aligned client & ignore any sort of positioning on iOS..?
A: send me an email and I will track down an example – davidi@embarcadero.com

Audience Question
Q: http://www.cyberlink.com/products/powerdvd-mobile/introduction_en_US.html
A: :D

Audience Question
Q: With the filters, are there some filter where the contrast curves for each color could be manipulated, like making them square formed, that is, for a certain intensity (x-scale) shift to max density and for a higher intensity again shift to pure white (zero color) ? Gives funny graphic effects.
A: All of the Image Effects Filters are implemented as Pixel Shader code and sent to the GPU. You can also create your own pixel shaders – there is an example article on the Australian Delphi User Group web site – search Google for Create your own Pixel Shader Effect for Delphi

Audience Question
Q: is there any way to leverage the API with FM to work with that?. thanks!
A: Linux Server is still on the roadmap. Android is next. Win/RT/ARM is also on the roadmap.

Audience Question
Q: Quick question: Is Linux support still on the road map, e.g next year?. thanks!
A: Linux Server is on the roadmap

Audience Question
Q: Does the APN server have to have the device tokens for devices receiving the messages? How would a developer get device tokens for all of the users of a given app that is sold through the app store?
A: Read the blog posts and source code – the server needs to know how to get to the device.

Audience Question
Q: Very much impressed. I proud of you and embarkadero. Speed with app prototyping, less coding, easier debugging… I love it.
A: :D

Audience Question
Q: I registered for this webinar at the last minute. I understand the sessions will be available online later, correct?
A: Replays will be available next week – links will appear on the CodeRage Mobile sessions list for each session – there will be Watch on YouTube and Download from CodeCentral link sfor each session.

Q: Thanks! If you have time, please put an answer here: http://stackoverflow.com/questions/17193344/delphi-xe4-with-ios-addon-how-to-embed-files
A: Will Try

Audience Question
Q: Yea, creating off screen doesn’t work…
A: send me email – davidi@embarcadero.com – I will see what is possible with forms versus tabcontrols

Audience Question
Q: hint: DocumentsFolder ist also included in Bakcup (itunes/icloud) Temp Folder in the root is not backup
A: Thanks

Audience Question
Q: Does the StartUp Documents stuff also apply to deploying to the simulator?
A: Yes

Q: Thanks! If you have time, please put an answer here: http://stackoverflow.com/questions/17193344/delphi-xe4-with-ios-addon-how-to-embed-files
A: Done

Q: On Android / Eclipse, I can place files in e.g. assets folder. Can I do something similar in Delphi XE4 for iOS? i.e. create a folder where data and image files can placed and automatically built into app? I know I can have images, txt etc. in the form file, but is not what I want if I can avoid it.
A: StartUp\Documents and sub folders

Audience Question
Q: HI. I am wanting to work with a HID USB device. Basicly along the lines of this code:
A: iOS Apis.

Audience Question
Q: use VENDORID
A: Yes

Audience Question
Q: hint: Device ID UDID in iOS7 not worling any more
A: Yes

Audience Question
Q: and it is gone with iOS 7
A: Yes

Audience Question
Q: Is there a simple way of getting a UUID or GUID under iOS?
A: http://docwiki.embarcadero.com/RADStudio/XE4/en/FireMonkey_Platform_Services

Audience Question
Q: http://www.monien.net/ios-identifying-your-users-devices-a-recipe-how-to-import-ios-classes/
A: Thanks

Audience Question
Q: your welcome
A: :D

Audience Question
Q: I thought all drummers were big. Most of the ones I’ve played with are huge.
A: Many are wiry too – just strong arms and legs

Audience Question
Q: Do you need to have an Apple Developers account to test on MacInCloud?
A: No. You only need an Apple Developer Account(s) to submit apps to the Apple iOS App and Mac App Stores.

Audience Question
Q: can i run delphi under linux?
A: The IDE runs on Windows. You could run it on Linux if you have a Virtual Dos Box or Virtual Machine that run Windows – or some other technologies for Linux that let you run Windows apps on Linux

Audience Question
Q: Random question, is there any built in way to assign sounds to button clicks or animations? I tried using the media player, but it plays out of sync with the event.. e.g. tab sides, completes it’s slide, then you hear woosh..
A: Play sounds on the OnClick event handlers.

Audience Question
Q: PushNotifications don’t work on the simulator ;-)
A: :D

Audience Question
Q: is there a way to play with any of the camera / video recording based apps in MacinCloud?
A: iOS Simulator only gives you access to some device pieces – orientation, location.

Audience Question
Q: We have Testflight integration ready for XE4 – I’ll put up a blog soon
A: Great!

Audience Question
Q: Did I hear right that MacInCloud has PAServer pre-installed on these instances for Delphi users?
A: Yes – you heard right!!!

Audience Question
Q: could you give us the link to code rage recorded webinars?
A: the links to the recorded webinars will appear on the coderage mobile session pages – thecoderage.com

Audience Question
Q: We really appreciate the quick replay availability!
A: Trying to not sleep so that I can get them all done :)

Audience Question
Q: Found it thanks http://docwiki.embarcadero.com/CodeExamples/XE4/en/UsingGUIDs_(Delphi)
A: Cool

Audience Question
Q: I have an 09 Mac Mini and it works great for Delphi development, can it it off Craigslist for around $200 or so
A: :D

Audience Question
Q: I like to connect both devices to my mac (ipad & iPhone) but it did not work because there is no possibility to adress the device… Please add this I always have to connect and disconnect the devices…
A: You can connect multiple devices to your Mac, but you then need to connect one of them as the active device. I do this using Xcode Window | Overview menu item – you can then select the device to use – one at time.

Audience Question
Q: Sorry should have said, they are on the OnClick events, it’s like it does all the other stuff in the OnClick Event before playing the sound, even though it’s the first thing in the event.. like it has a lower priority..? I even tried playing the sound, setting a timer to do the actual click code, but it still plays after..? Same with animation.
A: Suggest you create a separate thread and play the sound in that thread instead of having the sound play in the main application thread (it is doing a bunch of work).

Audience Question
Q: Can the submission steps be automated or scripted?
A: Not that I am aware of. I know that some people have tried to create PHP and script apps to drive the browser interfaces.

Audience Question
Q: How to select the target device?
A: Anders showed this – in Project | Options | Application – you can set the the devices your app will run on – iPhone&IPad, iPhone only, iPad Only.

Audience Question
Q: Everything you need to know about Delphi XE4 iOS compiler
http://sayatertufenk.blogspot.com
A: :D

Audience Question
Q: FREE Tools and Components for RAD Studio XE4 Registered users
http://edn.embarcadero.com/article/43181
A: :D

Audience Question
Q: There are people that resign the ipa file used (and tested) for adhoc
A: :D

Audience Question
Q: Thats a very messy process though
A: :D

Audience Question
Q: There are place in the internet where you can find the “signature” for things that you may not use. Such as Wifi Radio
A: :D

Audience Question
Q: video – Embarcadero Developer Direct Series http://streaming.embarcadero.com/
http://streaming.embarcadero.com/2013_Q2_EMEA/
http://streaming.embarcadero.com/2013_Q2_AMER/
A: :D

Audience Question
Q: once you put that into your app Apply may reject – if they find it. They are using static analyzers
A: :D

Audience Question
Q: @marcocantu on Delphi for iOS compiler changes: Of Strings, Immutability, COW, and AnsiStrings
http://blog.marcocantu.com/blog/strings_immutability_cow_ansistrings.html
A: :D

Audience Question
Q: Looking to develop for Mac/iOS without Apple hardware? Rent it from MacinCloud
http://www.macincloud.com
http://www.macincloud.com/features/tools/tools
A: :D

Audience Question
Q: video/docs – What’s New in RAD Studio and Delphi XE4
http://www.youtube.com/watch?v=RS1rFaRWIzA
http://docwiki.embarcadero.com/RADStudio/XE4/en/What%27s_New_in_Delphi_and_C%2B%2BBuilder_XE4
A: :D

Audience Question
Q: Delphi XE4 and RAD Studio XE4 iOS Code Snippets & Videos
http://www.embarcadero.com/products/delphi/ios-code-snippets
http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE4/iOSCodeSnippets/
A: :D

Audience Question
Q: Step by Step Guide – Using InterBase Lite and InterBase ToGo in Delphi iOS Applications
http://www.danielmagin.de/blog/index.php/2013/04/using-interbase-lite-and-interbase-togo-in-delphi-ios-applications-step-by-step-guide/
A: :D

Audience Question
Q: IBLite – FREE Embedded Interbase Database for iOS
http://edn.embarcadero.com/article/43128
http://blog.marcocantu.com/blog/iblite_free_interbase_ios.html
A: :D

Audience Question
Q: Using FormFamily to Create an iOS App for Multiple Form Factors
http://docwiki.embarcadero.com/RADStudio/XE4/en/Using_FormFamily_to_Create_an_iOS_App_for_Multiple_Form_Factors
http://docwiki.embarcadero.com/RADStudio/XE4/en/Form_Factor_Settings_in_RAD_Studio
http://docwiki.embarcadero.com/Libraries/XE4/en/FMX.Forms.TCommonCustomForm.FormFamily
http://docwiki.embarcadero.com/Libraries/XE4/en/FMX.Forms.TCommonCustomForm.FormFactor
A: :D

Audience Question
Q: Brian Long tells you all: everything you need to know about Delphi XE4 & Next Generation / iOS Delphi compiler changes
http://blog.blong.com/2013/04/delphi-for-ios-aka-delphi-xe4-aka-rad.html
A: :D

Audience Question
Q: Migrating Delphi Code to iOS from Desktop
http://docwiki.embarcadero.com/RADStudio/XE4/en/Migrating_Delphi_Code_to_iOS_from_Desktop
A: :D

Audience Question
Q: Zero-based strings in Delphi XE4 for iOS
http://docwiki.embarcadero.com/RADStudio/XE4/en/Zero-based_strings_(Delphi)
A: :D

Audience Question
Q: you can take a snapshot in the xcode organizer
A: Thanks

Audience Question
Q: video – How to setup Delphi XE4 for iOS development: run, deploy and debug your apps using your Mac, iOS Simulator and iOS Device
http://www.youtube.com/watch?v=0HnPgQgb6Ao
A: :D

Audience Question
Q: RAD Studio XE4 Instant Trial
http://windowsapps.com/rad-studio-trial.html?trial=1
http://docwiki.embarcadero.com/RADStudio/XE4/en/RAD_Studio_XE4_Instant_Trial_FAQ
http://www.embarcadero.com/products/rad-studio/downloads

A: :D

Audience Question
Q: RAD Studio XE4 / Delphi XE4 includes FREE access to ALL previous versions (from Delphi 7 & C++ Builder 6)
http://www.embarcadero.com/products/delphi/previous-versions
http://www.embarcadero.com/products/cbuilder/previous-versions

A: :D

Audience Question
Q: does the app stays on the device and can be run after disconnecting from mac?
A: Yes

Audience Question
Q: RAD Studio XE4 iOS Code Snippets
http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE4/iOSCodeSnippets/
http://docwiki.embarcadero.com/RADStudio/XE4/en/IOS_Code_Snippets

A: :D

Audience Question
Q: iOS Mobile Application Development with Delphi XE4
http://docwiki.embarcadero.com/RADStudio/XE4/en/IOS_Mobile_Application_Development

A: :D

Audience Question
Q: Develop iOS applications with RAD Studio
http://www.embarcadero.com/products/rad-studio/ios-development

White Paper – RAD Studio iOS Tutorials: Delphi iOS Application Development
http://docs.embarcadero.com/products/rad_studio/radstudioXE4/iOS%20Tutorial%20en.pdf

A: :D

Audience Question
Q: ARC (Automatic Reference Counting) in Delphi XE4 Mobile Compiler for iOS
http://docwiki.embarcadero.com/RADStudio/XE4/en/Automatic_Reference_Counting_in_Delphi_Mobile_Compilers
http://docwiki.embarcadero.com/CodeExamples/XE4/en/AutomaticReferenceCounting_(Delphi)
https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

A: :D

Audience Question
Q: Are there export restrictions on Interbase that includes encryption?
A: There may be – encryption you purchase will tell the story.

Audience Question
Q: RAD Studio XE4 demos/samples
http://radstudiodemos.svn.sourceforge.net/viewvc/radstudiodemos/branches/RadStudio_XE40/

RAD Studio XE4 / FireMonkey 3 iOS Mobile Demos
http://radstudiodemos.svn.sourceforge.net/viewvc/radstudiodemos/branches/RadStudio_XE40/FireMonkeyMobile/

A: :D

Audience Question
Q: RAD Studio XE4 & iOS Relevant doc-wiki pages
http://docwiki.embarcadero.com/RADStudio/XE4/en/Category:XE4
http://docwiki.embarcadero.com/RADStudio/XE4/en/Category:IOS
http://docwiki.embarcadero.com/RADStudio/XE4/en/
http://docwiki.embarcadero.com/Libraries/XE4/en/
http://docwiki.embarcadero.com/CodeExamples/XE4/en/
http://docwiki.embarcadero.com/RADStudio/XE4/e/index.php?title=Special:RecentChanges&limit=1000&days=100

A: :D

Audience Question
Q: Is Embarcadero preparing for next RAD Studio ( #XE5 v19) Android beta with #Zephyr ?
http://cc.embarcadero.com/ft/default.aspx
http://cc.embarcadero.com/FT/FTRegister.aspx
https://beta.embarcadero.com

A: :D

Audience Question
Q: Delphi XE4 Rocks! Thank you. Thank you. Thank you!
A: :D

Audience Question
Q: video – Make Your App Stand Out: 7 Expert Tips for Designing Your Mobile UI
http://www.youtube.com/watch?v=DbaV6lQQbCg

A: :D

Audience Question
Q: iOS Tutorials – Delphi iOS Application Development
http://docwiki.embarcadero.com/RADStudio/XE4/en/IOS_Tutorials:_Delphi_iOS_Application_Development

A: :D

Audience Question
Q: So the .ipa file ends up on the mac – or is it on the phone, ie. when doing ad hoc?
A: .ipa file is in a subfolder under your project folder along with debug builds, win32/win64 builds etc.

Audience Question
Q: video – RAD Studio XE4 – What’s new in the IDE (Jose Leon series)
http://joseleon.es/?cat=11

A: :D

–jeroen


Filed under: Delphi, Delphi XE4, Development, FireMonkey, OS X FMX, Software Development

The Wiert Corner - irregular stream of stuff: jpluimers

$
0
0

Cool to know that DIPP is able to strip directives from Delphi source code:

The freeware program DIPP from Delphi Inspiration can remove conditionals.

http://www.yunqa.de/delphi/doku.php/products/dipp/index

Even though DIPP does not support post-Delphi-2007 language enhancements, it usually does a very good job.

–jeroen

via: Delphi: Is there a tool that can remove conditional directives for particular conditional symbols? – Stack Overflow.


Filed under: Delphi, Development, Software Development

Firebird News: The Firebird Book Second Edition now on Amazon

$
0
0
You can now buy all 3 volumes from printed second edition from Amazon (If you are in Eu choose Amazon.uk/de) http://www.firebird-books.net/

Žarko Gajić: SQLite: Referential Integrity With Full Text Search Virtual Tables (used in a Delphi application)

$
0
0

sqlite-fts-ref-integrity
As a second step in my goal to implement full text search functionality in my Delphi application I had to create a sample SQLite database supporting FTS queries.
Full text search models in databases allow to do what Google does with web documents – quickly search for documents containing some word (token).

FTS enabled tables in SQLite are special tables created using the virtual table paradigm. There’s lots of info on FTS tables and their construction and usage on the SQLite web site.

Reminder: my idea is to see how to have full test search implemented in a Delphi application processing files under some read-only folder structure.

Each file (to end up in my FTS table) has several pages and the content of a page should be stored in a FTS table.

Warning: from now on I will presume you have enough knowledge on SQL syntax and SQLite to be able to read and understand “CREATE TABLE…”, “INSERT INTO…” and alike.

Initial idea would be to create the database using the following model (simplified):

DocumentFileContent
Id (primary field)
FileName
Id (primary field)
DocumentId (foreign key / ref integrity)
PageNumber
PageContent

Therefore two tables. First table “Document” stores file names, this table is a parent/master table, while table “FileContent” is a child table storing several records (page number and page text content) for each entry in its parent table (each record in child is for one page of the file being processed).

In the above model the DocumentID field in FileContent table should reference Document.Id so that SQL queries like Delete and Update on the Document table would also delete/update the corresponding rows in the FileContent table.

If the above could work (and it does not as you will see) the DDL SQL would look like:

CREATE TABLE Document (
  Id INTEGER PRIMARY KEY,
  FileName TEXT NOT NULL,
);

/*SQLite Full Text Search Tables */
CREATE VIRTUAL TABLE FileContent USING FTS4 (
  DocumentId INTEGER REFERENCES Document(Id) ON DELETE CASCADE ON UPDATE CASCADE,
  Page INTEGER,
  PageContent TEXT,
  UNIQUE(DocumentId, Page)
);

The above unfortunately does NOT work.
Virtual tables in SQLite do NOT support any constraints (referential integrity, foreign keys)!

DDL for FTS virtual table allowing foreign keys

Luckily, SQLite is enough powerful to support views and triggers and even triggers on views! There are ways to have best of both worlds: referential integrity on FTS virtual tables.

After some testing, the structure of the database best matching my requirements is :

CREATE TABLE Document (
  Id INTEGER PRIMARY KEY,
  FileName TEXT NOT NULL,
);

CREATE TABLE FilePages(
  DocumentId INTEGER REFERENCES Document(Id) ON DELETE CASCADE ON UPDATE CASCADE,
  Page INTEGER,
  UNIQUE(DocumentId, Page)
);

CREATE VIRTUAL TABLE PageContent USING fts4();

CREATE TRIGGER FilePages_DELETE AFTER DELETE ON FilePages
BEGIN
  /* required when ref. integrity deletes rows in FilePages as
     a result of delete row(s) operation in Document */
  DELETE FROM PageContent WHERE rowid = OLD.rowid;
END;

CREATE VIEW FTSData AS
  SELECT FilePages.rowid AS rowid, FilePages.DocumentId, FilePages.Page, PageContent.Content
  FROM FilePages JOIN PageContent ON FilePages.rowid = PageContent.rowid;

CREATE TRIGGER FTSData_INSERT INSTEAD OF INSERT ON FTSData
BEGIN
  INSERT INTO FilePages(DocumentId, Page) VALUES (NEW.DocumentId, NEW.Page);
  INSERT INTO PageContent (rowid, Content) VALUES (last_insert_rowid(), NEW.Content);
END;

CREATE TRIGGER FTSData_DELETE INSTEAD OF DELETE ON FTSData
BEGIN
  DELETE FROM FilePages WHERE rowid = OLD.rowid;
  DELETE FROM PageContent WHERE rowid = OLD.rowid;
END;

Visually:

Document [1 - ∞ FilePages]FilePages [1 - 1 PageContent]PageContent
rowid
Id (primary field – alias to “rowid”)
FileName
rowid
DocumentId (foreign key / ref integrity)
Page
rowid
Content

In SQLite, every row of every table has a signed integer ROWID field. The ROWID for each row is unique among all rows in the same table. If a table contains a column of type INTEGER PRIMARY KEY, then that column becomes an alias for the ROWID. If no columns are specified when creating the FTS table, a single column “Content” table is created.

Recipe: 3 tables, 1 view, and 3 triggers. Triggers are database operations that are automatically performed when a specified database event occurs. Views are pre-packaged SELECT statements.

The view FTSData serves to join the FTS table PageContent with its “one-to-one” relation table “FilePages” (the relation is actually imposed by triggers). FilePages are in one-to-many relation with Document being the parent table.

SQL Test

insert into Document values (1, 'file 1');
insert into FTSData values(null, 1, 1, 'doc 1 page 1');
insert into FTSData values(null, 1, 2, 'doc 1 page 2');

insert into Document values (2, 'file 2');
insert into FTSData values(null, 2, 1, 'doc 2 page 1');
insert into FTSData values(null, 2, 2, 'doc 2 page 2');

/* and finally a simple FTS query */
SELECT FROM PageContent WHERE MATCH 'page'

Any comments / better ideas?

The Wiert Corner - irregular stream of stuff: jpluimers

$
0
0

On the blog from Embarcadero MVP Luis Felipe González Torres are some great Delphi XE4 iOS demos.

However, the blog is Spanish (that’s probably why he is not on DelphiFeeds), so if you do not understand that you had to live with the Google Translate versions of the pages.

Until CodeRage Mobile that is: Anders Ohlsson gave a English presentation:

Creating Apple Push Notification Services (APNS) for your Mobile Applications

iOS supports the Apple Push Notification Services (APNS) This session will show you how to create a push notification services as part of your mobile application. APNS is service for sending information to iOS and OSX devices. This session will show you how to create server and device applications that create notifications containing the device token and JSON payload property list.

via CodeRage Mobile – Conference Sessions.

Basically he covered these Spanish blog posts where you can download the source code (Google translation in parenthesis):

  1. Delphi XE4 iOS. Adicionando soporte a Notificaciones Remotas (Video y Código Fuente) |.
    (Delphi XE4 iOS. Adding support for Notifications Remote (Video and Source) |)
  2. Delphi XE4 iOS. Flexibilizando el Soporte a Push Notification. Solucíon mas elegante! |.
    (Delphi XE4 iOS. Easing the Push Notification Support. More elegant solution! |)
  3. Delphi iOS XE4. Apple Push Notification. Capturando la notificación cuando la aplicación no se está ejecutando. |.
    (XE4 iOS Delphi. Apple Push Notification. Capturing the notification when the application is not running. |)
  4. Delphi iOS XE4. Apple Push. Configuración del Ambiente (Muy importante) |.
    (XE4 iOS Delphi. Apple Push. Environment Settings (important) |)

Important things:

–jeroen


Filed under: Delphi, Delphi XE4, Development, FireMonkey, iOS, Software Development

TPersistent: CouponCode.Free

$
0
0

I attended CodeRage Mobile and was just sent a coupon code for 15% off for doing so.  I thought I would find out how much an upgrade would cost me so I clicked on the buy link, added items to my basket and tried to apply the coupon code only to get this:

Your Code Does not Exist

Your Code Does not Exist


Loreen Fornshell from EBMT just called me and helped clarify the problem. Apparently there is a custom page for the CodeRage promo, and somehow I managed to get to a different page which was unaware of the promo codes. Turns out the CodeRage promo is 15% off of the normal prices, and currently I am eligible for a better promotion anyway.


DelphiTools.info: DWScript Just-In-Time compiler

$
0
0
For a couple months now, a JIT compiler has been available in the DWScript SVN for 32bits code. The JIT is meant to be transparent, that is, execution, debugging facilities and memory layouts are similar under JIT and interpretation, the only difference is the performance. The JIT also uses a hybrid architecture, which was designed [...]

Daniel Magin's Logfile: FireDAC Update 2 available

$
0
0

Embarcadero released a new Version of FireDac for XE4 users

Bildschirmfoto 2013-06-21 um 15.33.34

direct download Link to Files you find here: LINK

Change Log:

============================================================

v 8.0.5.3365 (28.05.13)

+ added: ADDataSet: EmptyView method to delete all filtered records

- fixed: ADDataSet: AV when dataset serialization failed at stream creating

- fixed: ADDataSet: TField.Required may be True for a field with a DB default value

- fixed: ADDataSet: after several Append's / SaveToStream / Delete's / LoadFromStream rows are in invalid state

- fixed: ExprFuncs: {LENGTH(col)} | {CHAR_LENGTH(col)} returns NULL for empty strings instead of 0

- fixed: DatS: possible AV (SIGSEGV(11)) at dtAnsiString comparision on a Posix (Mac OS, iOS) system

- fixed: DatS: possible "assertion failure" at row deletion with a sorted view

- fixed: Phys: possible AV at preparing a query after AbortJob was called for async query

- fixed: Phys: "is not a valid floating point value" possible on fetching Currency / Float columns

- fixed: Phys: StrsTrim trims non-space characters, eg CR / LF

- fixed: Phys: error possible on sending a BLOB / binary value of zero length and StrsEmpty2Null=False

- fixed: Phys: TADParam.AsAnsiString = '' is converted to NULL disregarding FormatOptions.StrsEmpty2Null

- fixed: Phys: "Delete command deleted [0] instead of [1] record" when deleting several records without PK fields and with NULL values in the fields

- fixed: Moni: flat file tracing fails to produce an output file on Mac OS X using a default path

+ added: IB: InterBase 2007 UNICODE_BE and UNICODE_LE support

- fixed: FB / IB: services are broken. "Invalid clumplet buffer structure" error or any attempt to execute a service.

- fixed: IB: "Fetch command returned [0] instead of [1] rows" error with TADTable

- fixed: SQLite: "Invalid argument to time encode" at time value with fractional part with more than 3 digitis

- fixed: Oracle: initial "connection lost" exception is replaced by "ORA-03114: not connected to ORACLE" at failed SQL command execution

+ added: ODBC: support for SolidDB

- fixed: DataSnap: several incompatibilities with DataSnap XE4

- fixed: Installer: does not uninstall / overwrite existing read-only files, eg uADStanCipher.dcu and sqlite3.obj

============================================================

TPersistent: Real World Marketing Lessons for ISVs

$
0
0

Marketing is about motivating people to buy your product or service. It is deeply routed in human psychology, and to do a proper job requires a lot of knowledge and skill. I have never had any respect for sales people who attempt to misrepresent their product’s merits. Stressing your product’s positive aspects of course is natural and desirable. Failing to provide full disclosure until after a purchase of any limitations walks the line of fraud in IMHO. In the dating world, it’s just known as bait and switch ☺

For these reasons I am attending ISVCon 2013, so I can not only learn how to create a marketable product, but market it as well (in an ethical fashion).  I hope to see lots of Delphi developers while I’m there, because I think Delphi has always been a good tool for ISVs.

I was always hesitant to try to market a product because I never knew where to start, and felt I knew too little to even determine the initial price of an offering. Recently it dawned on me that you don’t have to know! Let the market decide for you. Another revelation was that if I paid more attention, there are real world marketing lessons available on a regular basis, that I could learn from.

Let’s say you have an enhancement to an existing product, in this case yours. Tell potential customers it will be a low price upgrade and watch how much interest you can cultivate with pre-release marketing (webinars, presss releases etc). After you build the hype and a community of potential customers (if there isn’t one already), offer it initially for as much as the product for which it is an AddOn (let’s double our money). After all “low cost” is a subjective phrase. After you see how many takers, if it’s not as many as you wish to make sales targets, then make an “introductory” offer (sale). Construct special discount entry points into your on-line store and experiment with different discount percentages. Like every store, mark up your items and then offer them at 70% off.  If you have a competitor with a good product that is possibly better than yours, avoid direct comparisons, just lower your initial price to ensure it’s better than theirs (if possible).  After all it’s caveat emptor, and why spend the time/money improving the product, just market it more aggressively…

Marketing is kind of like fishing….you get up early and drive to the water (do something to make the potential customer feel special/deserving)….dangle something enticing in front of them (25% LIMITED TIME OFFER)…and hopefully the combination of the two things will result in an impulse buy (not a great deal of analytical thought before action is taken). After all, everyone wants the latest and greatest toys!

Hope to see you at ISVCon…and in the mean time remember that only suckers pay retail, and try to avoid getting filleted!

DelphiTools.info: Pascal app hits FireFox OS

$
0
0
A couple days ago, a Pascal game compiled with SmartMobileStudio was accepted on the FireFox MarketPlace as a packaged app. It had only been tested on the FireFox OS desktop simulator, how would it hold its own on a real device? We’re not talking of flagship phones with quad-cores like a Galaxy, a Nexus 4 or [...]

Pascal y Lazarus: La librería IBDAC

$
0
0


En nuestra empresa buscábamos una librería rápida y confiable para conectar nuestros sistemas a Firebird, y luego de hacer pruebas con las librerías nativas de Lazarus y varias otras librerías comerciales, nos decidimos por IBDAC.
IBDAC (Interbase Data Access Components) es una librería comercial, desarrollada por Devart. La primera versión es del año 2006, aunque recién en el 2008 se le agregó soporte para Free Pascal, y en el 2011 para Lazarus. La versión actual es la 5.0.

Aunque cada versión está certificada para una versión específica de Lazarus / Free Pascal, en la práctica la he podido instalar sin problemas en todas la versiones de Lazarus posteriores a la 0.9.30.

IBDAC instalada en Lazarus 1.0.10
IBDAC instalada en Lazarus 1.0.10

... instalada en Typhon 4.3 de 32 bits
... instalada en Typhon 4.3 de 32 bits

... instalada en Typhon 4.3 de 32 bits
... instalada en Typhon 4.3 de 64 bits
Al instalar esta librería aparecen dos nuevos tabs en la barra de herramientas de Lazarus. El primer tab lleva por título "Interbase Access" y contiene los componentes de acceso a la base de datos. El título del segundo tab es "Interbase Services", contiene los componentes de acceso administrativo, estadístico y de configuración de la base de datos. Los componentes TCRBatchMove y TVirtualTable aparecen en el tab "Data Access".

La librería IBDAC tiene una enorme cantidad de funciones y características, entre las que destacamos las siguientes:

Modo desconectado: En este modo la conexión se hace solamente cuando se la necesita. Para habilitarlo se debe setear en True la propiedad DisconnectedMode de la conexión. Luego de realizar las llamadas al servidor la conexión se cierra en forma automática. Los datasets permanecen abiertos aunque la conexión esté cerrada. Cuando se actualiza la información del dataset la conexión se abre, se envía la actualización, y se vuelve a cerrar.
El modo desconectado es muy útil en redes inseguras, pero tiene el inconveniente de que cada conexión requiere ser autorizada, y eso consume tiempo. Para evitarlo, podemos usar el componente TCustomDAConnection, que mantiene un pool de conexiones abiertas. De esa forma, cada vez que el sistema necesita conectarse a la base de datos, en vez de construir una nueva conexión utiliza una de las disponibles en el pool, reduciendo enormemente los tiempos.
Es recomendable además setear a True la opción LocalFailover de la conexión.

Local maestro-detalle: Cuando esta propiedad del TCustomDADataSet se pone en True las relaciones maestro-detalle usan filtrado local, sin referirse al servidor. De otro modo el dataset detalle ejecuta un query cada vez que se selecciona un registro en el dataset maestro. Esta opción es muy útil para reducir la cantidad de llamadas al servidor, mejorando el uso de recursos, aunque no es recomendable cuando la tabla detalle contiene demasiadas filas.   

Unicode: IBDAC soporta el formato Unicode UTF-8, para habilitar su uso utilizamos la propiedad  UseUnicode de la conexión. El valor de esta propiedad afecta los resultados de las consultas y procedimientos almacenados. Si se va a utilizar este formato, hay que tener en cuenta las recomendaciones del manual sobre las conversions entre StringField y WideStringField.

Encriptación de datos: IBDAC permite encriptar y desencriptar campos en la base de datos. Para eso es necesario agregar el componente TCREncryptor al dataset y especificar qué campos serán encriptados. Así, cuando se agregue o modifique la información de la tabla, se encriptará en el lado del cliente antes de guardarla. Del mismo modo, el componente desencriptará en forma automática al leer desde la base de datos.
Existen dos formas de trabajar: guardamos solamente los datos encriptados, o bien les agregamos el GUID y el hash. La segunda forma es la preferible en términos de seguridad, aunque consume más recursos.
TCREncryptor soporta la encriptación solamente de campos string o binarios, por razones de tamaño de buffer. Si es necesario encriptar campos de otro tipo (como fechas, números, etc.), es necesario crear un campo de tipo binario o BLOB en la tabla, y luego convertirlo en el tipo correcto en el lado cliente, con ayuda del Mapeo de Tipo de Datos.

Mapeo de Tipo de Datos: es un recurso que permite crear mapeos entre tipos de campos de la base de datos y tipos de datos Delphi.En versiones anteriores, donde el Mapeo de Tipo de Datos o ea soportado, IBDAC establecía automáticamente la correspondencia entre ambos tipos. En las versiones que soportan el mapeo, la correspondencia puede establecerse en forma manual.
El mecanismo es inteligente, pueden establecerse reglas para ignorar los errores de conversión, en caso de desbordes numéricos o de cadena.

CachedUpdates: Cuando está habilitada, esta propiedad permite que las modificaciones a un dataset (modificaciones a un registro, agregar un nuevo registro, borrar un registro) se guarden en una cache interna del lado cliente en lugar de ser escritos directamente a las tablas de la base de datos. Cando los cambios están completos, todos los cambios se escriben dentro de una sola transacción.
Este mecanismo es especialmente útil para aplicaciones cliente trabajando con servidores remotos, ya que de esta forma se reducen la cantidad de transacciones y los tiempos empleados, disminuyendo por lo tanto el tráfico de red.

Tablas Virtuales: Con el componente TVirtualTable es posible almacenar datos en forma independiente de la base de datos. Los campos de la tabla pueden ser definidos tanto en tiempo de diseño como en runtime. Se pueden definir filtros, así como crear índices sobre los campos de la tabla. Dispone de los métodos Locate y LocateEx para hacer búsquedas. Es posible hacer persistente la información ingresada en tempo de diseño usando la opción voStored. En tiempo de ejecución las modificaciones se pueden guardar usado el método SaveToFile y posteriormente recuperar llamando al método LoadFromFile.

Monitoreo: Es posible monitorear y analizar las llamadas a la base de datos hechas por nuestras aplicaciones, utilizando la herramienta gratuita dbMonitor. Los eventos puede ser ordenados y filtrados por descripción, timestamp, duración o estado.

En la práctica, luego de adoptar IBDAC como nuestra principal herramienta de acceso a bases de datos, hemos desarrollado dos proyectos comerciales - Capital 5 y Visual Sueldos 5.10 (para la empresa Logosoft de Argentina) - y varias herramientas de uso interno, incluyendo un CRM y . Entre nuestros planes está el testeo deotras herramientas del mismo fabricante.




Firebird News: Firebird Python driver FDB 1.4 is released with new features

$
0
0
FDB release 1.4 is out: http://pypi.python.org/pypi/fdb Here is the changelog and the list of bugs fixed New Features: * fdb.schema submodule extended with support for user privileges. Improvements: * fdb.services.User.load_information() method to load information about user from server. * fdb.ibase content cleanup and additions. * fdb.blr submodule with BLR definitions. Bugs Fixed: * PYFB-37 – [...]

Daniel Magin's Logfile: FMX XE4 Update 1 Form Event onActivate Problem unofficial fix

$
0
0

After installing XE4 Update 1 a small problem added on the Firemonkey Form Event onActivate.

The Event onActivate is not fired correctly anymore. See also my QC Report and also a other QC Report on the Embarcadero Website.

http://qc.embarcadero.com/wc/qcmain.aspx?d=116841

http://qc.embarcadero.com/wc/qcmain.aspx?d=116717

After analyzing the changes in the FMX Sources i found the problem and i fixed it.

Patching FMX.Forms.pas works now fine with Update 1

procedure TCommonCustomForm.Show; var ScreenService: IFMXScreenService; begin if not (csDesigning in ComponentState) and TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin case FPosition of TFormPosition.poScreenCenter: SetBounds(System.Round((ScreenService.GetScreenSize.X - Width) / 2), System.Round((ScreenService.GetScreenSize.Y - Height) / 2), Width, Height); end; end; if FFullScreen then begin SetFullScreen(True); FFullScreen := False; end ;  FVisible := True; // Add line as in XE4 before Update 1 FWinService.ShowWindow(Self); // FVisible := True; remove this line DoShow; end;

Now onActivate works fine


Firebird News: The Lazarus team is glad to announce the release of Lazarus 1.0.10.

$
0
0
The Lazarus team is glad to announce the release of Lazarus 1.0.10. This is a bug fix release, built with the current fpc 2.6.2. Here is the list of changes for Lazarus and Free Pascal: http://wiki.lazarus.freepascal.org/Lazarus_1.0_fixes_branch#Fixes_for_1.0.10_.28Merged.29 http://wiki.lazarus.freepascal.org/User_Changes_2.6.2 The release is available for download at SourceForge: http://sourceforge.net/projects/lazarus/files/ Choose your CPU, OS, distro and then the “Lazarus [...]

Firebird News: Firebird V3.0 Alpha 1 – The code has been tagged in Subversion

$
0
0
URL to build from is: http://svn.code.sf.net/p/firebird/code/firebird/tags/T3_0_0_Alpha1/. Roadmap was also updated http://www.firebirdsql.org/en/roadmap/ For testing you can use the pre alpha snapshots For Linux: http://web.firebirdsql.org/downloads/snapshot_builds/linux/fb3.0/ and Windows: http://web.firebirdsql.org/downloads/snapshot_builds/win/3.0/

Delphi Code Monkey: Build 2013 : Quo Vadis, Microsoft

$
0
0
After it became obvious to the Powers that Be at Microsoft that Windows 8 was bombing spectacularly, they went back to the drawing board, and said, "what do we need to add to windows to make it a commercial success?".

I believe Microsoft did a good job of that discussion, because what I heard today in the Build 2013 discussion on the new APIs and capabilities in Windows 8.1 they have thought about what kinds of tasks people might want to accomplish using Windows, for business, and at home, and what kinds of capabilities Microsoft could make available that are better than what other people are offering, and more importantly, they're making a bold "double down" on their investment in what can only be described as a mixed bag of successes and failures.  Or the worst version of Windows, ever.

With Windows 8.0 a public failure, and Windows 8.1 the plan to move past that, and with an incremental updates in Visual Studio 2013 to help people build apps for the app store, can Microsoft really turn around Windows 8's abysmal adoption figures and make something people will want to build on top of?    What? 100,000 apps in the Windows 8 app store? I wouldn't be publishing those numbers, that's closer to the Blackberry App store catalog size than it is to Android or Apple App Store sizes.



What do they have in Windows 8.1 that I think matters?  First, a new set of "Point Of Sale" APIs (They're calling it Point of Service), that look pretty slick.  Secondly, they've got an AirPlay clone baked into Windows 8.1, and a multi-monitor system including a "Projector" API that lets you make an application that has a presenter view and a public customer facing view. Previously WinRT apps had one and only one window, on one and only one monitor.  Which sucked.  So WinRT is growing.  And some of the RT APIs can be accessed from the desktop, including notifications.  All of this sounds good.  But it's not enough.  The Bing platform is cool too. Also, not enough.

What do they not have in Windows 8.1?  That's an even longer list:

  • NO complete and cohesive strategy to unify the disparate worlds of Windows Desktop and Windows RT/Store.  Imagine I am a software vendor with an existing Windows product.  How am I to feel about the split-personality disorder that is Windows 8 desktop (powerful business applications that run the world) and the Windows 8 store (Touch Screen Games  for Toddlers).
  • NO support for other programming languages or tools within the Windows RT/Store world. It's Visual Studio or nothing, C#, JavaScript, C++, or nothing. I want to build Windows RT apps using Delphi. Yes I could use Oxygene, but I want to use Delphi.  Embarcadero wants me to be able to do that.  But it would take a Microsoft effort to extend a hand to Embarcadero and get this going.  Until Microsoft cares about developers building stuff outside Visual Studio, I remain sceptical about the long-term health of the Windows Store and the Windows RT ecosystem.
  • NO changes to Windows RT that would make it compelling enough that I would want to buy a Windows RT device like the Surface RT, which Microsoft recently placed on an educational "Fire Sale" pricing, which tells me they've got a warehouse full of 'em and can't get them to sell. They're also basically giving them away to Build attendees. Maybe they should sell them to anybody who wants one, along with a 1 year WinRT Store developer account, at $99 each. Hey, that just might work. Are you listening Microsoft? Developers Developers Developers.
  • NO changes to Windows 8.1 that will make people who were previously negative about Windows 8.0 want to run out and buy a Windows 8.0 device like the Surface pro.
However, what they have not announced, I am meant to believe will be coming soon, using Microsoft's agile rolling release system.  If I believe in the message that Ballmer delivered, then the future of Windows looks very bright.  But on stage, what I see is a tired man, a tired angry, angry man.  A man who should step down and let somebody else rebuild this place.  But that's not what's going to happen. What's going to happen is Ballmer is going to radically reorganize Microsoft, as a part of his legacy.  Within 2 years I predict Ballmer will be gone, of his own volition.
I don't think he wants to leave on a low note.  Surface RT is a failure. Windows 8.0 is a failure.

The keynote did discuss a bit of start-menu/desktop integration.  A background image from Windows desktop is also now, if you like, the background image in the new "this time it's nice, no really we mean it" Start screen in Windows 8.1.  Wallpaper? Is that the best we could do? The fact is that jumping from one screen (your desktop) to another is against the grain, and against the entire history of Windows that has been baked into Windows since Windows first appeared on most people's PCs, in the Windows 3.1 era.    In the pre-start-button era of Windows 3.1, a Program Manager and a File Manager provided you with a way to launch programs.  Windows 95 brought the original version of the start-menu, the one that has hardly changed since that date.   A change was overdue.  But Microsoft clearly did not understand their customers, and went where the customers were not willing to follow.  Windows 8.1 still represents a leap that most users will not willingly make.

Quo Vadis Microsoft? Where the hell are you going? And are you sure your customers will follow you?

P.S.  The Channel 9 Video Host People are so awkward that I feel sorry for them.  Does anybody else think that they would be better off just letting the geeks and Microsoft staff just talk directly to the customers, and skip the whole Channel 9 Host "Personality" and "Color Man" bits?

The road to Delphi: Getting System information in OSX and iOS using Delphi (XE2, XE3, XE4) Part 2

$
0
0

This is the continuation of the Getting System information in OSX and iOS using Delphi (XE2, XE3, XE4) Part 1 article.

Inside of the Posix.SysSysctl unit (which is the translation for the sysctl.h file) you can find a set of arrays (CTL_NAMES, CTL_KERN_NAMES, CTL_HW_NAMES, CTL_USER_NAMES, CTL_VM_NAMES) which contains the alias names for the system information elements, so using the items of these arrays you can build the name parameter for the SysCtlByName method.

For example if you want to access the kernel version you can build the alias like so

  Name:=PAnsiChar(CTL_NAMES[CTL_KERN].ctl_name+'.'+CTL_KERN_NAMES[KERN_VERSION].ctl_name);//kern.version

And then using the SysCtlByName method

function KernelVersion: AnsiString;
var
  res : Integer;
  len : size_t;
  p, Name: PAnsiChar;
begin
  len := SizeOf(Result);
  Name:=PAnsiChar(CTL_NAMES[CTL_KERN].ctl_name+'.'+CTL_KERN_NAMES[KERN_VERSION].ctl_name);
  res:=SysCtlByName(Name, nil, @len, nil, 0);
   if (len>0) and (res=0)  then
   begin
     GetMem(p, len);
     try
       res:=SysCtlByName(Name, p, @len, nil, 0);
       if res=0 then
        Result:=p;
     finally
       FreeMem(p);
     end;
   end;
end;

Another option is use these definitions for build a set of methods to retrieve all the system info included in these structs.

Try the next sample project.

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.Classes,
  System.Types,
  Posix.Errno,
  Posix.SysTypes,
  Posix.SysSysctl,
  System.SysUtils;

function GetsysctlIntValue(mib: TIntegerDynArray) : integer;
var
  len : size_t;
  res : integer;
begin
   len := sizeof(Result);
   res:=sysctl(@mib[0], 2, @Result, @len, nil, 0);
   if res<>0 then
    Result:=-1;// RaiseLastOSError;
end;

function GetsysctlInt64Value(mib: TIntegerDynArray) : Int64;
var
  len : size_t;
  res : integer;
begin
   len := sizeof(Result);
   res:=sysctl(@mib[0], 2, @Result, @len, nil, 0);
   if res<>0 then
     Result:=-1; //RaiseLastOSError;
end;

function GetsysctlStrValue(mib: TIntegerDynArray) : AnsiString;
var
  len : size_t;
  p   : PAnsiChar;
  res : integer;
begin
   Result:='';
   res:=sysctl(@mib[0], 2, nil, @len, nil, 0);
   if (len>0) and (res=0)  then
   begin
     GetMem(p, len);
     try
       res:=sysctl(@mib[0], 2, p, @len, nil, 0);
       if res=0 then
        Result:=p;
     finally
       FreeMem(p);
     end;
   end;
end;

procedure  ListKernelValues;
var
  mib : TIntegerDynArray;
  i   : Integer;
begin
 Writeln('High kernel limits');
 Writeln('------------------');
 for i:=0 to KERN_MAXID-1 do
 begin
    mib:=TIntegerDynArray.Create(CTL_KERN, i);
    case CTL_KERN_NAMES[i].ctl_type of
     CTLTYPE_NODE  :  Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_KERN].ctl_name, CTL_KERN_NAMES[i].ctl_name, '[node]']));
     CTLTYPE_OPAQUE:  Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_KERN].ctl_name, CTL_KERN_NAMES[i].ctl_name, '[structure]']));
     CTLTYPE_INT   :  Writeln(Format('%s.%-18s %d',[CTL_NAMES[CTL_KERN].ctl_name, CTL_KERN_NAMES[i].ctl_name, GetsysctlIntValue(mib)]));
     CTLTYPE_QUAD  :  Writeln(Format('%s.%-18s %d',[CTL_NAMES[CTL_KERN].ctl_name, CTL_KERN_NAMES[i].ctl_name, GetsysctlInt64Value(mib)]));
     CTLTYPE_STRING : Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_KERN].ctl_name, CTL_KERN_NAMES[i].ctl_name, GetsysctlStrValue(mib)]));
    end;
 end;
 Writeln;
end;

procedure  ListGenericCPU_IO_Values;
var
  mib : TIntegerDynArray;
  i   : Integer;
begin
 Writeln('Generic CPU, I/O');
 Writeln('-----------------');
 for i:=0 to HW_MAXID-1 do
 begin
    mib:=TIntegerDynArray.Create(CTL_HW, i);
    case CTL_HW_NAMES[i].ctl_type of
     CTLTYPE_NODE  :  Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_HW].ctl_name, CTL_HW_NAMES[i].ctl_name, '[node]']));
     CTLTYPE_OPAQUE:  Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_HW].ctl_name, CTL_HW_NAMES[i].ctl_name, '[structure]']));
     CTLTYPE_INT   :  Writeln(Format('%s.%-18s %d',[CTL_NAMES[CTL_HW].ctl_name, CTL_HW_NAMES[i].ctl_name, GetsysctlIntValue(mib)]));
     CTLTYPE_QUAD  :  Writeln(Format('%s.%-18s %d',[CTL_NAMES[CTL_HW].ctl_name, CTL_HW_NAMES[i].ctl_name, GetsysctlInt64Value(mib)]));
     CTLTYPE_STRING : Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_HW].ctl_name, CTL_HW_NAMES[i].ctl_name, GetsysctlStrValue(mib)]));
    end;
 end;
 Writeln;
end;

procedure  ListUserLevelValues;
var
  mib : TIntegerDynArray;
  i   : Integer;
begin
 mib:=TIntegerDynArray.Create(CTL_USER, 0);
 Writeln('User-level');
 Writeln('----------');
 for i:=0 to USER_MAXID-1 do
 begin
    mib[1]:=i;
    case CTL_USER_NAMES[i].ctl_type of
     CTLTYPE_NODE  :  Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_USER].ctl_name, CTL_USER_NAMES[i].ctl_name, '[node]']));
     CTLTYPE_OPAQUE:  Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_USER].ctl_name, CTL_USER_NAMES[i].ctl_name, '[structure]']));
     CTLTYPE_INT   :  Writeln(Format('%s.%-18s %d',[CTL_NAMES[CTL_USER].ctl_name, CTL_USER_NAMES[i].ctl_name, GetsysctlIntValue(mib)]));
     CTLTYPE_QUAD  :  Writeln(Format('%s.%-18s %d',[CTL_NAMES[CTL_USER].ctl_name, CTL_USER_NAMES[i].ctl_name, GetsysctlInt64Value(mib)]));
     CTLTYPE_STRING : Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_USER].ctl_name, CTL_USER_NAMES[i].ctl_name, GetsysctlStrValue(mib)]));
    end;
 end;
 Writeln;
end;

procedure  ListVMValues;
var
  mib : TIntegerDynArray;
  i   : Integer;
begin
 Writeln('Virtual memory');
 Writeln('-------------');
 for i:=0 to VM_MAXID-1 do
 begin
    mib:=TIntegerDynArray.Create(CTL_VM, i);
    case CTL_VM_NAMES[i].ctl_type of
     CTLTYPE_NODE  :  Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_VM].ctl_name, CTL_VM_NAMES[i].ctl_name, '[node]']));
     CTLTYPE_OPAQUE:  Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_VM].ctl_name, CTL_VM_NAMES[i].ctl_name, '[structure]']));
     CTLTYPE_INT   :  Writeln(Format('%s.%-18s %d',[CTL_NAMES[CTL_VM].ctl_name, CTL_VM_NAMES[i].ctl_name, GetsysctlIntValue(mib)]));
     CTLTYPE_QUAD  :  Writeln(Format('%s.%-18s %d',[CTL_NAMES[CTL_VM].ctl_name, CTL_VM_NAMES[i].ctl_name, GetsysctlInt64Value(mib)]));
     CTLTYPE_STRING : Writeln(Format('%s.%-18s %s',[CTL_NAMES[CTL_VM].ctl_name, CTL_VM_NAMES[i].ctl_name, GetsysctlStrValue(mib)]));
    end;
 end;
 Writeln;
end;

begin
  try
    ListKernelValues;
    ListGenericCPU_IO_Values;
    ListUserLevelValues;
    ListVMValues;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Behind the connection: Delayed loading of a DLL

$
0
0
The delayed directive can be used when declaring a function exported from a DLL so that the DLL is not loaded before the function is called. This is very useful because you may first check if the conditions are met to call the DLL before actually loading the DLL, for example check if the DLL is located where it should. If you statically load a DLL (the default), then your application won’t
Viewing all 1725 articles
Browse latest View live