Opět něco co mne cestou praštilo do nosu. Dnes to bude případ "Test na prázdný řetězec", jeden zajímavý inzerát a help update pro XE.
Test na prázdný řetězec
Kdysi v době Turbo Pascalu nebo první verze Delphi někdo napsal, že je velmi výhodné testovat řetězec na prázdnost přes
volání Length. Prosím - to už dávno není pravda, pokud to někdy pravda byla.
program Project2;
{$APPTYPE CONSOLE}
var
s: string;
begin
s:= 'Test';
if s<>'' then
Writeln('!1');
if s='' then
Writeln('!2');
if Length(s) = 0 then
Writeln('!3');
if Length(s) <> 0 then
Writeln('!4');
end.
se v Delphi 5 (jako zástupce neinline Delphi) přeloží nějak takto (jen zajímavé pasáže):
;if s='' then
cmp dword ptr [s],$00
jnz Project2 + $79
;Writeln('!2');
mov eax,[$004092ec]
mov edx,$00408730
call @Write0LString
call @WriteLn
call @_IOTest
;if Length(s) = 0 then
mov eax,[s]
call @LStrLen
test eax,eax
jnz Project2 + $A0
;Writeln('!3');
…
Všimněte si volání "magic" funkce @LStrLen, naproti jednoduchému porovnání.
V Delphi 2007 takto (evidentně zlepšení ohledně Length):
;if s='' then
cmp dword ptr [$004087e8],$00
jnz $00404111
;Writeln('!2');
mov eax,[$00405794]
mov edx,$004041a8
call @Write0LString
call @WriteLn
call @_IOTest
;if Length(s) = 0 then
mov eax,[$004087e8]
test eax,eax
jz $0040411f
sub eax,$04
mov eax,[eax]
test eax,eax
jnz $0040413c
;Writeln('!3');
Už žádné volání, ale jen cca 5x delší kód. Předpokládám, že už je to naprosto jasné.
Inzerátek
Sice už z dubna, pokud mne má azbuka neklame, ale přesto snad zajímavé - kráceno.
zdroj, autorem je Embarcadero Technologies
Delphi Developer in RAD Studio Team, St.Petersburg
Ever wonder what it would be like to work with the top developers in the world?
Embarcadero is offering a rare opportunity to work on a yet to be released
product in their Delphi RAD Studio framework team.
We have positions open to join a leading edge team
located in company's development center in St.-Petersburg, Russia.
In this position, candidate will be working on the development of FireMonkey,
a new framework and platform for creating cross-platform applications in Delphi RAD Studio.
He would be a member of the FireMonkey R&D team working on the
design and implementation of this framework and platform.
Required knowledge and skill:
• 5+ years working experience in commercial Delphi application development.
• In-depth knowledge of Delphi language concepts, threading and memory management.
• Deep knowledge of Windows operating systems and associated Win APIs.
• Experience developing components for RAD Studio (Delphi, C++Builder),
proficient with latest versions of RAD Studio.
• Good understanding of OOP/OOD concepts, good algorithmic and implementation skills.
• Good team player, good communication skills.
• Technical English skills are must (reading, writing, speaking is desirable).
The ideal candidate will have relevant experience within commercial
software development and a Bachelors/Master Degree in computer science,
mathematics, or software engineering.
The salary is 70000 RUR and higher.
Všimněte si FireMonkey.
Help update 3
Help update 3 pro Delphi XE je dostupný.