interesting.

From: Skybuck Flying (nospam_at_hotmail.com)
Date: 08/26/04


Date: Thu, 26 Aug 2004 03:03:32 +0200

Ok,

The library is now this:

library LibraryTest;

{$UNSAFECODE ON}

{
uses
  SysUtils, // notice: delphi stuff excluded
  Classes,
}
uses
  System.Reflection;

[assembly: AssemblyTitle('')]
[assembly: AssemblyDescription('')]
[assembly: AssemblyConfiguration('')]
[assembly: AssemblyCompany('')]
[assembly: AssemblyProduct('')]
[assembly: AssemblyCopyright('')]
[assembly: AssemblyTrademark('')]
[assembly: AssemblyCulture('')]

//
// Version information for an assembly consists of the following four
values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build
Numbers
// by using the '*' as shown below:

[assembly: AssemblyVersion('1.0.*')]

//
// In order to sign your assembly you must specify a key to use. Refer to
the
// Microsoft .NET Framework documentation for more information on assembly
signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto
Service
// Provider (CSP) on your machine. KeyFile refers to a file which
contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the
key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name)
utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory. For example, if your
KeyFile is
// located in the project directory, you would specify the
AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile('mykey.snk')], provided
your output
// directory is the project directory (the default).
// (*) Delay Signing is an advanced option - see the Microsoft .NET
Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile('')]
[assembly: AssemblyKeyName('')]

procedure test_procedure_integer( var a : integer ); //stdcall;
begin
 a := 123456;
end;

procedure test_procedure_string( var s : string ); //stdcall;
begin
 s := 'HI XXXXXXX !'; // name hidden hehehe./

function test_function_integer : integer;// stdcall;
begin
 result := 666;
end;

function test_function_string : string;// stdcall;
begin
 result := 'IT''S ME SKYBUCK !';
end;

exports
 test_procedure_integer,
 test_procedure_string,
 test_function_integer,
 test_function_string;

begin
end.

program UseLibraryTest;

{$APPTYPE CONSOLE}

procedure test_procedure_integer( var a : integer ); external
'LibraryTest.DLL';

procedure test_procedure_string( var s : string ); external
'LibraryTest.DLL';

function test_function_integer : integer; external 'LibraryTest.DLL';

function test_function_string : string; external 'LibraryTest.DLL';

//uses
// SysUtils;

begin

 writeln( test_function_string );
 readln;

end.

The interesting tid bit is that this actually compiles and runs...

Notice how reference are missing...

Therefore simply AMAZING ! the wonders of delphi.

First of all....... that it compiles can be seen as :

1. COOL

or

2. UNCOOL.

Because it's not working !!

It reminds me of C compiler see a few news threads back ;) lol.

Anyway..

It's

1. COOL since the program is compiled.... and it could work if DLL is
available or maybe even something else wrong.

2. IT'S UNCOOL that it compiles since the DLL is missing...

WELL.... I THINK IT S COOL...

BUTTTTTttttt

Now comes the really BAD/UNCOOL part

It actually RUNS !

WITHOUT ERRORS !?! BUT IT SHOULD GIVE ERRORS !

At least I think should...

The dll is present in the executables directory...

But still the output is fucked:

This is the output:

????????!st

TUT TUT TUT

The other dude had it working in like 5 seconds... with visual basic .net

and me... I am still struggling lol...

This spells f-u-c-k-d-e-l-p-h-i lol...

Mixes the letters for extra fun :)