mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
Better samples for Pascal
This commit is contained in:
121
samples/Pascal/cwindirs.pp
Normal file
121
samples/Pascal/cwindirs.pp
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
|
||||||
|
unit cwindirs;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
windows,
|
||||||
|
strings;
|
||||||
|
|
||||||
|
Const
|
||||||
|
CSIDL_PROGRAMS = $0002;
|
||||||
|
CSIDL_PERSONAL = $0005;
|
||||||
|
CSIDL_FAVORITES = $0006;
|
||||||
|
CSIDL_STARTUP = $0007;
|
||||||
|
CSIDL_RECENT = $0008;
|
||||||
|
CSIDL_SENDTO = $0009;
|
||||||
|
CSIDL_STARTMENU = $000B;
|
||||||
|
CSIDL_MYMUSIC = $000D;
|
||||||
|
CSIDL_MYVIDEO = $000E;
|
||||||
|
CSIDL_DESKTOPDIRECTORY = $0010;
|
||||||
|
CSIDL_NETHOOD = $0013;
|
||||||
|
CSIDL_TEMPLATES = $0015;
|
||||||
|
CSIDL_COMMON_STARTMENU = $0016;
|
||||||
|
CSIDL_COMMON_PROGRAMS = $0017;
|
||||||
|
CSIDL_COMMON_STARTUP = $0018;
|
||||||
|
CSIDL_COMMON_DESKTOPDIRECTORY = $0019;
|
||||||
|
CSIDL_APPDATA = $001A;
|
||||||
|
CSIDL_PRINTHOOD = $001B;
|
||||||
|
CSIDL_LOCAL_APPDATA = $001C;
|
||||||
|
CSIDL_COMMON_FAVORITES = $001F;
|
||||||
|
CSIDL_INTERNET_CACHE = $0020;
|
||||||
|
CSIDL_COOKIES = $0021;
|
||||||
|
CSIDL_HISTORY = $0022;
|
||||||
|
CSIDL_COMMON_APPDATA = $0023;
|
||||||
|
CSIDL_WINDOWS = $0024;
|
||||||
|
CSIDL_SYSTEM = $0025;
|
||||||
|
CSIDL_PROGRAM_FILES = $0026;
|
||||||
|
CSIDL_MYPICTURES = $0027;
|
||||||
|
CSIDL_PROFILE = $0028;
|
||||||
|
CSIDL_PROGRAM_FILES_COMMON = $002B;
|
||||||
|
CSIDL_COMMON_TEMPLATES = $002D;
|
||||||
|
CSIDL_COMMON_DOCUMENTS = $002E;
|
||||||
|
CSIDL_COMMON_ADMINTOOLS = $002F;
|
||||||
|
CSIDL_ADMINTOOLS = $0030;
|
||||||
|
CSIDL_COMMON_MUSIC = $0035;
|
||||||
|
CSIDL_COMMON_PICTURES = $0036;
|
||||||
|
CSIDL_COMMON_VIDEO = $0037;
|
||||||
|
CSIDL_CDBURN_AREA = $003B;
|
||||||
|
CSIDL_PROFILES = $003E;
|
||||||
|
|
||||||
|
CSIDL_FLAG_CREATE = $8000;
|
||||||
|
|
||||||
|
Function GetWindowsSpecialDir(ID : Integer) : String;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
sysutils;
|
||||||
|
|
||||||
|
Type
|
||||||
|
PFNSHGetFolderPath = Function(Ahwnd: HWND; Csidl: Integer; Token: THandle; Flags: DWord; Path: PChar): HRESULT; stdcall;
|
||||||
|
|
||||||
|
|
||||||
|
var
|
||||||
|
SHGetFolderPath : PFNSHGetFolderPath = Nil;
|
||||||
|
CFGDLLHandle : THandle = 0;
|
||||||
|
|
||||||
|
Procedure InitDLL;
|
||||||
|
|
||||||
|
Var
|
||||||
|
pathBuf: array[0..MAX_PATH-1] of char;
|
||||||
|
pathLength: Integer;
|
||||||
|
begin
|
||||||
|
{ Load shfolder.dll using a full path, in order to prevent spoofing (Mantis #18185)
|
||||||
|
Don't bother loading shell32.dll because shfolder.dll itself redirects SHGetFolderPath
|
||||||
|
to shell32.dll whenever possible. }
|
||||||
|
pathLength:=GetSystemDirectory(pathBuf, MAX_PATH);
|
||||||
|
if (pathLength>0) and (pathLength<MAX_PATH-14) then
|
||||||
|
begin
|
||||||
|
StrLCopy(@pathBuf[pathLength],'\shfolder.dll',MAX_PATH-pathLength-1);
|
||||||
|
CFGDLLHandle:=LoadLibrary(pathBuf);
|
||||||
|
|
||||||
|
if (CFGDLLHandle<>0) then
|
||||||
|
begin
|
||||||
|
Pointer(ShGetFolderPath):=GetProcAddress(CFGDLLHandle,'SHGetFolderPathA');
|
||||||
|
If @ShGetFolderPath=nil then
|
||||||
|
begin
|
||||||
|
FreeLibrary(CFGDLLHandle);
|
||||||
|
CFGDllHandle:=0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
If (@ShGetFolderPath=Nil) then
|
||||||
|
Raise Exception.Create('Could not determine SHGetFolderPath Function');
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function GetWindowsSpecialDir(ID : Integer) : String;
|
||||||
|
|
||||||
|
Var
|
||||||
|
APath : Array[0..MAX_PATH] of char;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result:='';
|
||||||
|
if (CFGDLLHandle=0) then
|
||||||
|
InitDLL;
|
||||||
|
If (SHGetFolderPath<>Nil) then
|
||||||
|
begin
|
||||||
|
if SHGetFolderPath(0,ID or CSIDL_FLAG_CREATE,0,0,@APATH[0])=S_OK then
|
||||||
|
Result:=IncludeTrailingPathDelimiter(StrPas(@APath[0]));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Initialization
|
||||||
|
Finalization
|
||||||
|
if CFGDLLHandle<>0 then
|
||||||
|
FreeLibrary(CFGDllHandle);
|
||||||
|
end.
|
||||||
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
{ $Id$ }
|
|
||||||
{
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
gtkextra.pp - GTK(2) widgetset - additional gdk/gtk functions
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
This unit contains missing gdk/gtk functions and defines for certain
|
|
||||||
versions of gtk or fpc.
|
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
@created(Sun Jan 28th WET 2006)
|
|
||||||
@lastmod($Date$)
|
|
||||||
@author(Marc Weustink <marc@@dommelstein.nl>)
|
|
||||||
|
|
||||||
*****************************************************************************
|
|
||||||
This file is part of the Lazarus Component Library (LCL)
|
|
||||||
|
|
||||||
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
||||||
for details about the license.
|
|
||||||
*****************************************************************************
|
|
||||||
}
|
|
||||||
|
|
||||||
unit GtkExtra;
|
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
{$I gtkdefines.inc}
|
|
||||||
|
|
||||||
{$ifdef gtk1}
|
|
||||||
{$I gtk1extrah.inc}
|
|
||||||
{$endif}
|
|
||||||
|
|
||||||
{$ifdef gtk2}
|
|
||||||
{$I gtk2extrah.inc}
|
|
||||||
{$endif}
|
|
||||||
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
{$ifdef gtk1}
|
|
||||||
{$I gtk1extra.inc}
|
|
||||||
{$endif}
|
|
||||||
|
|
||||||
{$ifdef gtk2}
|
|
||||||
{$I gtk2extra.inc}
|
|
||||||
{$endif}
|
|
||||||
|
|
||||||
end.
|
|
||||||
22
samples/Pascal/large.pp
Normal file
22
samples/Pascal/large.pp
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
program large;
|
||||||
|
|
||||||
|
const
|
||||||
|
max = 100000000;
|
||||||
|
|
||||||
|
type
|
||||||
|
tlist = array[1..max] of longint;
|
||||||
|
|
||||||
|
var
|
||||||
|
data : tlist;
|
||||||
|
i : integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
i := 0;
|
||||||
|
while(i < max)
|
||||||
|
do
|
||||||
|
begin
|
||||||
|
data[i] := 0;
|
||||||
|
Writeln(data[i])
|
||||||
|
end
|
||||||
|
end.
|
||||||
26
samples/Pascal/tw27294.pp
Normal file
26
samples/Pascal/tw27294.pp
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
uses
|
||||||
|
uw27294;
|
||||||
|
|
||||||
|
var
|
||||||
|
p : procedure;
|
||||||
|
|
||||||
|
procedure test;
|
||||||
|
|
||||||
|
begin
|
||||||
|
p:=@test;
|
||||||
|
writeln('OK');
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure global;
|
||||||
|
begin
|
||||||
|
p:=nil;
|
||||||
|
test;
|
||||||
|
p();
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
global;
|
||||||
|
uw27294.global;
|
||||||
|
end.
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user