Ik ben een beetje aan het spelen met het migreren van Delphi 7 projecten naar Delphi .NEt. Tot nu toe ging alles "vlekkeloos", maar ik wil nu graag dat ik unsafe code compileer in Delphi .NET.
Nu heb ik natuurlijk al wat gezocht op internet, en dan zou de volgende oplossing moeten werken:
Maar dit levert tijdens compileren de volgende errors:
[Error] Unit1.pas(32): Undeclared identifier: 'GetMem'
[Error] Unit1.pas(45): Incompatible types: 'string' and 'PWideChar'
[Error] Unit1.pas(49): Undeclared identifier: 'FreeMem'
En dan natuurlijk de laatste FATAL ERROR:
[Fatal Error] Project1.dpr(7): Could not compile used unit 'Unit1.pas'
Nu weet ik niet precies wrom het fout gaat, volgens de voorbeelden op inet zou dit gewoon moeten werken. Iemand die me op weg kan helpen?
Nu heb ik natuurlijk al wat gezocht op internet, en dan zou de volgende oplossing moeten werken:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| {$UNSAFECODE ON} procedure TForm1.Test; unsafe; var charPtr: PChar; // PChar is unsafe type begin // reserveer opslagruimte voor 4 characters (UNSAFE CODE) GetMem(charPtr, 4 * SizeOf(Char)); // waardes toekennen charPtr^ := 'A'; Inc(charPtr); charPtr^ := 'B'; Inc(charPtr); charPtr^ := 'C'; Inc(charPtr); charPtr^ := #0; // String terminator // weergeven van de waardes Dec(charPtr, 3); ShowMessage('Characters stored = '+charPtr); // vrijgeven van geheugen (UNSAFE CODE) FreeMem(charPtr); end; {$UNSAFECODE OFF} |
Maar dit levert tijdens compileren de volgende errors:
[Error] Unit1.pas(32): Undeclared identifier: 'GetMem'
[Error] Unit1.pas(45): Incompatible types: 'string' and 'PWideChar'
[Error] Unit1.pas(49): Undeclared identifier: 'FreeMem'
En dan natuurlijk de laatste FATAL ERROR:
[Fatal Error] Project1.dpr(7): Could not compile used unit 'Unit1.pas'
Nu weet ik niet precies wrom het fout gaat, volgens de voorbeelden op inet zou dit gewoon moeten werken. Iemand die me op weg kan helpen?