» frame | home browse filter search | refresh | log on
printed maandag 20 mei 2013 4:42:07 from www.yoy.be
Building query...
verion 2.0.3.333
- Multi-line matches show first line when double-click matching file
I've been impressed by sqlite3 ever since I get to know about it. It's open source, and even more it's really put in the public domain completely avoiding the licensing headache. I haven't read the source in great detail, but as I understand it it's all in a single big file! Even how it works internally is impressive.
Since I didn't like the options available, I created my own very thin wrapper for sqlite3.dll without much trouble. Only in this one multi-threaded application, I've run into an occasional "database locked" error, so I had to search documentation and source for what I can do about it.
Working with other database solutions, I've had the common sense of using a database connection for each thread, so each could work with the database undisturbed by eachother. As it turns out this is not required with sqlite3! As stated with SQLITE_CONFIG_SERIALIZED, which is the default setting, you're better off using a single connection over all threads. Indeed in my case it solved the "database locked" errors.
location:
Application Development >
Data Storage >
SQLite
created: 23/03/2013 22:36:26 «
modified: 23/03/2013 22:36:26
weight: 0
tokens:
I've put it up here, but since it's a pretty good boiler plate code, I'll put it up here as well. Include a unit like this one into an ActiveX library. I especially had a though time to get the values right that are based on idCmdFirst and get sent back when a menu item is invoked. Something that gives pretty strange results if you don't get it right.
unit demoContextMenu;
interface
uses
Windows, Classes, ActiveX, ComObj, ShlObj;
type
PItemIDList=LPCITEMIDLIST;
{ TContextMenu }
TContextMenu = class(TComObject, IShellExtInit, IContextMenu)
private
Files:TStringList;
protected
{ IShellExtInit }
function IShellExtInit.Initialize = SEIInitialize;
function SEIInitialize(pidlFolder: PItemIDList; lpdobj: IDataObject;
hKeyProgID: HKEY): HResult; stdcall;
{ IContextMenu }
function QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst, idCmdLast,
uFlags: UINT): HResult; stdcall;
function InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult; stdcall;
function GetCommandString(idCmd: UINT_Ptr; uType: UINT; pwReserved: PUINT;
pszName: LPSTR; cchMax: UINT): HResult; stdcall;
public
procedure Initialize; override;
destructor Destroy; override;
end;
const
Class_ContextMenu: TGUID = '{put a new GUID here by pressing Ctrl+Shift+G}';
implementation
uses ComServ, SysUtils, Registry;
procedure TContextMenu.Initialize;
begin
inherited;
Files:=TStringList.Create;
end;
destructor TContextMenu.Destroy;
begin
Files.Free;
inherited;
end;
function TContextMenu.SEIInitialize(pidlFolder: PItemIDList;
lpdobj: IDataObject; hKeyProgID: HKEY): HResult; stdcall;
var
StgMedium: TStgMedium;
FormatEtc: TFormatEtc;
i,c:integer;
s:string;
begin
if lpdobj=nil then Result:=E_INVALIDARG else
begin
FormatEtc.cfFormat:=CF_HDROP;
FormatEtc.ptd:=nil;
FormatEtc.dwAspect:=DVASPECT_CONTENT;
FormatEtc.lindex:=-1;
FormatEtc.tymed:=TYMED_HGLOBAL;
Result:=lpdobj.GetData(FormatEtc,StgMedium);
if not(Failed(Result)) then
begin
c:=DragQueryFile(StgMedium.hGlobal,$FFFFFFFF,nil,0);
for i:=0 to c-1 do
begin
SetLength(s,1024);
SetLength(s,DragQueryFile(StgMedium.hGlobal,i,PChar(s),1024));
Files.Add(s);
end;
ReleaseStgMedium(StgMedium);
Result:=NOERROR;
end;
end;
end;
function TContextMenu.QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst,
idCmdLast, uFlags: UINT): HResult; stdcall;
var
h:HMENU;
i:integer;
begin
i:=1;
h:=CreatePopupMenu;
AppendMenu(h,MF_STRING,idCmdFirst+i,'Menu item one'); inc(i);
AppendMenu(h,MF_STRING,idCmdFirst+i,'Menu item two'); inc(i);
AppendMenu(h,MF_STRING,idCmdFirst+i,'Menu item three'); inc(i);
InsertMenu(Menu,indexMenu,
MF_BYPOSITION or MF_POPUP or MF_STRING,h,'DemoContextMenu');
Result:=i;
end;
function TContextMenu.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult;
stdcall;
begin
Result := E_FAIL;
//not called by application
if HiWord(Integer(lpici.lpVerb))=0 then
begin
Result := NOERROR;
case LoWord(Integer(lpici.lpVerb)) of
1:;//perform action one (use data in Files:TStringList)
2:;//perform action two
3:;//perform action three
else Result := E_INVALIDARG;
end;
end;
end;
function TContextMenu.GetCommandString(idCmd: UINT_Ptr; uType: UINT;
pwReserved: PUINT; pszName: LPSTR; cchMax: UINT): HResult; stdcall;
begin
if idCmd=0 then
begin
if (uType=GCS_HELPTEXTW) then
StrCopy(pszName,'Perform one of several functions on files');
Result:=NOERROR;
end
else
Result:=E_INVALIDARG;
end;
type
TContextMenuFactory = class(TComObjectFactory)
public
procedure UpdateRegistry(Register: Boolean); override;
end;
procedure TContextMenuFactory.UpdateRegistry(Register: Boolean);
var
ClassID:string;
r:TRegistry;
begin
if Register then
begin
inherited UpdateRegistry(Register);
ClassID := GUIDToString(Class_ContextMenu);
CreateRegKey('*\shellex', '', '');
CreateRegKey('*\shellex\ContextMenuHandlers', '', '');
CreateRegKey('*\shellex\ContextMenuHandlers\DemoContextMenu', '', ClassID);
CreateRegKey('Folder\shellex', '', '');
CreateRegKey('Folder\shellex\ContextMenuHandlers', '', '');
CreateRegKey('Folder\shellex\ContextMenuHandlers\DemoContextMenu', '', ClassID);
if Win32Platform=VER_PLATFORM_WIN32_NT then
begin
r:=TRegistry.Create;
try
r.RootKey:=HKEY_LOCAL_MACHINE;
r.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions',True);
r.OpenKey('Approved',True);
r.WriteString(ClassID,'DemoContextMenu Shell Extension');
finally
r.Free;
end;
end;
end
else
begin
DeleteRegKey('Folder\shellex\ContextMenuHandlers\DemoContextMenu');
DeleteRegKey('*\shellex\ContextMenuHandlers\DemoContextMenu');
inherited UpdateRegistry(Register);
end;
end;
initialization
TContextMenuFactory.Create(ComServer, TContextMenu, Class_ContextMenu,
'', 'DemoContextMenu Shell Extension', ciMultiInstance, tmApartment);
end.location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
ActiveX / COM objects
created: 12/11/2012 16:41:31 «
modified: 12/11/2012 16:42:58
weight: 0
tokens:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb774950(v=vs.85).aspx
v2.0.2.300
- issue expanding closest line above for lower indentation-levels over blank lines
- shell context menu on files/folders items
- command line parameters support:
DirFind [<options>] <search path> [<filter filenames> [<exclude filenames> [<search pattern>]]]
options:
/i ignore case
/m multi line
/a count all matches
(/-... to disable, default settings are loaded from previous session)
Warning: this is a very specific hack an may not apply to other situations.
For a number of projects that check for an update of the program executable on the central file server, from within the main form's OnCreate event handler, I was searching for a way to 'skip' Application.Run; when an update is found. I was using "raise EAbort.Create('Auto-update available.');" already to skip the remainder of the OnCreate event handler, but back in the project source (.dpr), Application.Run would start and perform the message loop. I used PostQuitMessage before, but that doesn't seem to always work, a better way would be to skip the message loop altogether.
I used "if SelfUpdateAvailable then Application.Run;" for some time, but in any new project that would use the auto-update mechanism, you would have to remember to put it in, or the support-calls after the first update for the program would remind you, or have you wondering first what's wrong with the auto-update this time. Anyway, it's better to leave the .dpr just the way Delphi hands it to you since it will modify it later when you add forms or data modules.
So I figured out I could disarm Application.Run by calling this from the 'start auto update' code:
Application.ControlDestroyed(Application.MainForm);
This causes Application.MainForm to be unassigned, and Application.Run to skip starting the message loop, mission accomplished.
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi
created: 10/05/2012 13:13:32 «
modified: 10/05/2012 13:14:52
weight: 0
tokens:
v2.0.1.290
- bug reading UTF16/UCS2 files
- issue updating display on abort
v2.0.0.288
I've switched back to Delphi. The .Net version had trouble running more than three threads, and behaved strangly when exceptions occur. The option to use three regex'es in one run is gone, but there's an option now to use Execute instead of Test showing both the number of files that match, and the exact total number of matches in these files.
Also new is that when you double-click a matching line (double-click a file-node to get these), you not only get the five preceding and succeding lines, you also get the lowest preceding line of each lower level of indentation. It's hard to explain, but in most languages you should get the lines that starts the scope the line is in: namespace, function, method, loop or condition branch.
Code in a slightly modified form also used here: https://github.com/stijnsanders/TMongoWire/blob/master/mongoAuth.pas
This is odd, it looks like there isn't an open source md5.pas unit. And by open source I mean under a permissive license or without copyright or licensing. So I set out to write my own and share it here. I based it on the original RFC, and even more the description than the reference implementation, because it uses a few of those C tricks I don't like. I hope it's performant enough, in case you're demanding performance of it. I've done some testing myself, but if you detect any kind of issue, please let me know.
md5.pas with MD5Hash for strings, sometimes used with passwords
md5Stream.pas with MD5HashFromStream which takes any kind of stream (TFileStream, TMemoryStream...), and optionally a preset number of bytes to take from the stream (from the current position!).
Enjoy.
Update: since MD5 and SHA1 are really similar, I've done the same for SHA1 and added sha1.pas and sha1Stream.pas.
Update 2: since I needed it for something else, I've added RIPEMD160 as well. And while I'l at it SHA256 as well
location:
freeware
created: 16/02/2012 20:26:41 «
modified: 14/03/2013 21:24:12
weight: 0
tokens:
Applications that provide one or more ActiveX/COM automation objects, created with older versions of Delphi, running without administrative privileges, throw an EOleSysError when strarting up (typically from within the Application.Initialize;). This is because the application will try to register its type library and class registrations when it starts. Add this unit to the project to silent this error at run-time:
unit comFixW6;
interface
implementation
uses Windows, SysUtils, ComObj;
var
SaveInitProc:pointer=nil;
procedure FixComInitProc;
begin
try
if SaveInitProc<>nil then TProcedure(SaveInitProc);
except
on e:EOleSysError do if e.ErrorCode<>TYPE_E_REGISTRYACCESS then raise;
end;
end;
initialization
SaveInitProc:=InitProc;
InitProc:=@FixComInitProc;
end.location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
ActiveX / COM objects
created: 2/02/2012 21:55:51 «
modified: 2/02/2012 22:01:41
weight: 0
tokens:
Merci,
hope this works to run a third party application (without gui) from within a service :)
What a strange discovery I made today. I was hunting down a weird exception we noticed in the logs of the live system.
It turns out that a 'global' callback procedure is being called when you use Printer.Canvas (Printer.Canvas.StretchDraw in my case) by the GDI subsystem. The default AbortProc in Printers.pas calls Application.ProcessMessages, which was causing trouble in my case.
There's a quick workaround:
function MyAbortProc(Prn: HDC; Error: Integer): Bool; stdcall; begin Result := not FPrinter.Aborted; end;
And then right after Printer.BeginDoc; call SetAbortProc(Printer.Canvas.Handle,MyAbortProc);
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi
created: 26/01/2012 19:46:39 «
modified: 26/01/2012 19:46:39
weight: -200
tokens:
An alternative SQLite3.dll wrapper
location:
freeware
created: 14/12/2010 15:23:58 «
modified: 14/12/2010 15:23:58
weight: 0
tokens:
A Delphi driver to access a ![]()
mongoDB server.
It maps variables onto Delphi variables of type OleVariant, which resembles the loose typing of JavaScript a lot.
There are two main units and three main object to enable access to a mongo DB server:
bsonDoc.pas
TBSONDocument = class(TInterfacedObject, IBSONDocument, IPersistStream)
function BSON:IBSONDocument; overload;
function BSON(x:array of OleVariant):IBSONDocument; overload;
BSON(['x',5,'y',7]);BSON(['x','[','$gt',7,']']);mongoWire.pas
TMongoWire=class(TObject)
TMongoWireQuery=class(TBSONDocumentsEnumerator)
Additional tools
bsonUtils.pas
function BsonToJson(Doc:IBSONDocument):WideString;
Converts a ![]()
BSON document into a ![]()
JSON string.
function JsonToBson(jsonData:WideString):IBSONDocument;
Converts a ![]()
JSON string into a ![]()
BSON document.
procedure JsonIntoBson(jsonData:WideString;doc:IBSONDocument); overload;
Parses a ![]()
JSON string and adds any keys to an existing ![]()
BSON document, overwriting the value if a key already exists.
procedure JsonIntoBson(jsonData:WideString;doc:IBSONDocument;var EndIndex:integer); overload;
Parses only the first ![]()
JSON object from a string into an existing ![]()
BSON document, and returns the index into the string where the ![]()
JSON object ends.
Use this method to iterate over a list of ![]()
JSON strings. (See also IBSONDocument.Clear)
location:
freeware
created: 2/12/2010 10:05:35 «
modified: 24/06/2012 21:39:02
weight: 0
tokens:
references:
![]()
![]()
![]()
This little trick appears to work in the Delphi debugger also! Use this code to set the debug display name for the current thread:
interface
function IsDebuggerPresent: BOOL; stdcall;
implementation
uses Windows;
function IsDebuggerPresent; external 'kernel32.dll';
procedure SetThreadName(ThreadDisplayName:AnsiString);
var
ThreadInfo:record
dwType:LongWord;
szName:PAnsiChar;
dwThreadID:LongWord;
dwFlags:LongWord;
end;
begin
if IsDebuggerPresent then
begin
ThreadInfo.dwType:=$1000;
ThreadInfo.szName:=PAnsiChar(ThreadDisplayName);
ThreadInfo.dwThreadID:=LongWord(-1);//calling thread
ThreadInfo.dwFlags:=0;
try
RaiseException($406D1388,0,SizeOf(ThreadInfo) div SizeOf(LongWord),@ThreadInfo);
except
//
end;
end;
end;
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Debugging
created: 5/11/2010 0:25:47 «
modified: 5/11/2010 0:45:47
weight: 0
tokens:
version 1.0.1.260
I finally got round to changing two things that were disturbing me about DirFind:
When searching a large structure of folders and sub-folders, I usually wanted to see the matching files in a certain sub-folder, but had to wait for the search running in the background to get to the directory I wanted to see. Now, when you expand the folder view, the background process is asked to move the folder you selected to the front of the queue. This feature will save me tuns of time. If larger files are being searched, this behaviour might not be apparent rightaway.
There was an issue using the replace feature on non-unicode text files. When re-writing the files, they got converted to UTF8. Now, if no unicode byte order marks are present, the file is re-written in the 'default' encoding, depending on your current regional settings. You may still get unexpected results on non-unicode files using another encoding than this default encoding.
v1.0.2.255
I've finally figured out the deal about Code-A/B/C in encoding Code128 barcodes. I've added code that auto-switches between digits-interleaving as soon as four or more digits follow eachother, and the checksum character.
dit is handig, ik kende er een paar van deze lijst nog niet:
http://www.stevetrefethen.com/blog/DelphiIDEWisdom.aspx
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Delphi Websites
created: 20/09/2009 23:20:43 «
modified: 20/09/2009 23:20:43
weight: 0
tokens:
I've (finally) re-done the 'installers' on a few of my freeware applications, thanks to ![]()
InnoSetup:
They are a bit bigger now, but look much better, and have a full uninstaller and an entry listed in the 'add remove programs' control panel list.
location:
www.yoy.be >
users >
StijnSanders
created: 28/08/2009 0:03:41 «
modified: 28/08/2009 0:07:14
weight: 0
tokens:
references:
![]()
![]()
![]()
![]()
![]()
Zeveraars! Uit het "2009-2010 ICT Jaarboek":
"Heel wat bedrijven gebruiken nog met success de zogenoemde 4GL-omgevingen uit de jaren '90. [...] Voorbeelden zijn Delphi, [...] Die programma's draaien alleen in hun eigen runtime-omgeving, en die is niet gratis."
Zeveraars! Een referentie naar hun bron moest je zo toch al niet verwachten, maar ze halen daarenboven RAD-omgevingen met 4GL-talen door elkaar! En programma's gemaakt met Delphi hebben helemaal geen run-time nodig!
Trouwens, hun link naar het jaarboek werkt niet eens!
En al hun 'nieuws' wist ik al lang... (en dan zwijg ik nog over dat ik ze niet eens in Google vond)
http://www.itprofessional.be/
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi
created: 20/08/2009 15:55:19 «
modified: 20/08/2009 15:55:19
weight: 0
tokens:
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Delphi Websites
created: 6/08/2009 14:00:35 «
modified: 6/08/2009 14:00:35
weight: 0
tokens:
Tiens, wat ik hier nu plots ontdek... Ik ben aan xxmGecko bezig, een firefox-plugin-nsIProtocolHandler. Die werkt intern dus wel eens met een stream, en om echt grote streams te kunnen ondersteunen, gebruik je dus Int64's voor Size en Position...
Nu gebruik ik ook veel inc en dec. Waarschijnlijk een overblijfsel uit mijn (heel beperkte) assemblerjeugd. Dus dacht ik dat die ook wel veilig zijn om te gebruiken met Int64's.
Nu, kreeg ik tijdens het debuggen plots dingen die vastlopen en waardes in de buurt van 4294967295 in die Int64's! Voor wie het getal niet herkent, je krijgt het als je de laagste 32 bits op 1 zet. En alle bits die op 1 springen gebeurt wel eens als je een negatief cijfer krijgt.
Dat er een negatief cijfer komt in een stream position, is nog een ander probleem dat ik moet uitzoeken, maar waarom die Int64 maar de helft van de bits gekeerd krijgt inplaats van alle 64 (en dus echt een negatief cijfer zou weergeven) lijkt me een slecht bijverschijnsel van dec te gebruiken met Int64's.
Alle dec(A,B); vervangen met A:=A-B; dus vanaf nu!
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Debugging
created: 25/06/2009 23:04:42 «
modified: 25/06/2009 23:04:42
weight: 0
tokens:
http://blogs.teamb.com/craigstuntz/2008/08/28/37831/
Yes! Nog nieuwe ingewikkelde manieren om onmogelijk te supporten code te schrijven! (Zaten we er op te wachten?) via
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi
created: 16/04/2009 0:16:24 «
modified: 16/04/2009 0:16:33
weight: 0
tokens:
Aah, vandaag is het eindelijk allemaal tesamen gekomen:
http://xxm.svn.sourceforge.net/viewvc/xxm/trunk/Delphi/demo2/svnwiki/
Ik wou al lang (al lang!) een oplossing om een wiki mee in SubVersion te stoppen, dus moest het in files. Het is een van de begin-redenen om aan ![]()
WikiEngine te beginnen. Al was het dat ik ![]()
PmWiki's syntax wou overnemen om gemakkelijk bestaande data te kunnen gebruiken/importeren.
Voordelen daarvan zijn:
- de wijzigingen kunnen in verschillende files/pagina's tesamen worden gecommit,
- de history zit kant en klaar in de svn history
- de wijzigingen/toevoegingen aan de documentatie kunnen direct tesamen met de wijzigingen/toevoegingen aan de source-code (en dus de functionaliteit) worden gecommit
Alleen hoe maak je het wat gemakkelijker om niet direct voor iedere working folder en/of branch een website te moeten opzetten naar de wiki? (Hou die ![]()
URL's dan maar eens bij!) Dus is ![]()
WikiLocal ontstaan, opnieuw met wat invloeden van ![]()
PmWiki zoals groups en de side-bar, en toch met wat me opvallend afwezig leek in ![]()
PmWiki: (snelle, bruikbare) backlinks!
Maar toch, voor bepaalde doeleinden (zoals de trunk of de release branch) is het nodig om een website te hebben om de content in de wiki te publiceren. En daar komt ![]()
xxm van pas! Met ![]()
WikiEngine.dll kan je de wiki-data omzetten naar ![]()
HTML, en via doodgewone ![]()
HTTP-GET calls kan je aan de HEAD revision van de wiki-data-files.
(Nu nog ergens vinden waar ik goedkoop xxm kan hosten...)
location:
freeware >
WikiEngine >
WikiLocal
created: 16/03/2009 23:40:04 «
modified: 16/03/2009 23:44:19
weight: 0
tokens:
references:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Whow! moet ik thuis eens tijd voor nemen om te lezen:
http://www.theregister.co.uk/2009/02/04/verity_stob_delphi_syntax/
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi
created: 5/02/2009 13:18:31 «
modified: 5/02/2009 13:18:31
weight: -200
tokens:
Yikes! Looks like it's about time I look into 2D barcodes as well!
http://en.wikipedia.org/wiki/QR_Code (especially the barcode on the billboard!)
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Delphi Websites
created: 2/01/2009 11:00:48 «
modified: 2/01/2009 11:00:48
weight: 0
tokens:
Deze moet ik eens goed bekijken! Ik had al een vermoeden dat er zoiets moest in zitten met WebServices in Delphi aan het werk te zien... Maar als ik dus eens iets met xxm en WebServices zou willen doen, moet ik deze misschien ook oppikken.
location:
projects >
xxm >
feature requests >
WebServices/XMLRPC support
created: 4/12/2008 22:34:38 «
modified: 4/12/2008 22:34:38
weight: 0
tokens:
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Delphi Websites
created: 2/12/2008 23:14:50 «
modified: 2/12/2008 23:14:50
weight: 0
tokens:
Appears to have some nice sections on TWebBrowser (and DocHostUIHandler!)
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Delphi Websites
created: 28/11/2008 8:34:51 «
modified: 28/11/2008 8:34:51
weight: 0
tokens:
Wa! onderaan: Turbo Pascal! Als ik nog eens 16-bit wil programmeren, staat em dus gewoon hier!
(Misschien komt er een dag dat daar Delphi 7 bij komt?)
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Delphi Websites
created: 14/11/2008 8:22:13 «
modified: 14/11/2008 8:22:13
weight: 0
tokens:
goh, waar zouden deze mensen zo tegenwoordig allemaal mee bezig zijn?
efg's Pillars of Delphi
D'Oh! Het moet mij weer overkomen. Over wat een bug precies is kan gedicussieerd worden, maar ik denk dat ik iets heb gevonden. Maar dan in Windows 2000. En daar zijn ze waarschijnlijk wel al mee gestopt met aan werken...
Even schetsen waar het om gaat:
- IIS op Windows (IIS 5 op 2000, IIS 6 op XP, IIS 7 heb ik nog niet echt onder de vingers gehad, maar zou geen probleem mogen zijn)
- een xxm project van eigen makelij
- die gebruikt maakt van WikiEngine
- met een IWikiPageCheck implementatie
Nu, dat laatste is (in Delphi) gewoon een TInterfacedObject, wat op XP en 2003 (Vista heb ik nog niet kunnen proberen) goed werkt, op 2000 niet! Geeft een Access Violation op hetzelfde adres als de code pointer (Wat ook al verdacht is) als ik een instantie van de IWikiPageCheck implementatie probeer te assignen aan de WikiEngine instantie.
Ik heb rap eens geproobeerd om een type library toe te voegen, een IClassFactory ervoor te maken, the works, maar dat geeft een "Element not found" error... Daar kan ik misschien op verder zoeken.
Maar voorlopig denk ik er aan om misschien ook een "microsoftje te doen", en wil je hosten op Win2k, dan moet het zonder WikiEngine...
location:
www.yoy.be >
users >
StijnSanders
created: 5/08/2008 20:41:47 «
modified: 16/08/2008 11:31:57
weight: 0
tokens:
Making Delphi programs Vista-Ready
voorlopig nog niet nodig gehad, maar altijd handig
location:
spotted on the net >
IT-related >
development related
created: 27/06/2008 9:22:23 «
modified: 27/06/2008 9:22:23
weight: 0
tokens:
en hier zijn ze ook a niet positief...
http://www.theregister.co.uk/2008/06/09/delphi_for_php_2_review/
maar deze mens slaat dan weer de nagel op de kop:
http://delphiroadmap.untergrund.net/A_cross-platform_vision_for_Delphi/section2.html
New IDE features since Delphi 7
Zucht... Ergens heb ik zo de indruk dat ze het beginnen te weten dat ze wat steun verloren zijn in hun 'aanname' van dotnet. En verder niets genoeg hebben herzien om het de moeite te maken om over te stappen van Delphi 7 naar iets nieuw.
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi
created: 6/06/2008 21:24:27 «
modified: 6/06/2008 21:24:27
weight: 0
tokens:
references:
![]()
![]()
Discovered this one, after stability problems with Indy 9... Never used anything since.
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Delphi Websites >
Components
created: 27/05/2008 16:47:45 «
modified: 27/05/2008 16:48:45
weight: 0
tokens:
ho, interessant, een numerieke indicatie dat Delphi verrevan dood zou zijn
http://www.tiobe.com/content/paperinfo/tpci/Delphi.html
(via http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)
location:
spotted on the net >
IT-related >
software related
created: 25/04/2008 14:32:48 «
modified: 25/04/2008 14:36:38
weight: 0
tokens:
ha! gewoon alles op sourceforge! van Async Pro had ik al gehoord, maar ze hebben blijkbaar nog allemaal leuke dingen! (Alleen Sleuth staat er dan weer niet tussen, tju)
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Delphi Websites >
Components
created: 3/03/2008 12:46:22 «
modified: 25/03/2008 10:51:56
weight: 0
tokens:
Ha! en ik maar zoeken! Ik had gewoon 'Include remote debug symbols' niet aan staan! Blijkbaar heb je die wel nodig om
dllhost.exe /ProcessID:{...}
te debuggen. Ik vond het al vreemd dat mijn exceptions wel doorkwamen, maar step/trace niet werkte. Natuurlijk verlies je tijd op zo'n dingen dingen...
http://dn.codegear.com/article/28416
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Debugging
created: 26/02/2008 10:06:02 «
modified: 26/02/2008 10:07:00
weight: 0
tokens:
Nice to see Delphi is far from dead.
location:
Application Development >
Programming Languages >
Object Pascal >
Delphi >
Delphi Websites
created: 21/02/2008 9:20:08 «
modified: 21/02/2008 9:20:08
weight: 0
tokens:
I provided some more explanation for the people at www.delphipages.com here:
http://www.delphipages.com/tips/thread.cfm?ID=1108
oh! ah! If I would have all the time of the world! If! And if I've stumbled upon this one sooner...
location:
projects >
TreeFox
created: 12/12/2007 23:25:24 «
modified: 12/12/2007 23:25:24
weight: 0
tokens: