Ветеран
Сообщения: 649
Благодарности: 444
|
Профиль
|
Отправить PM
| Цитировать
Dark_Delphin, проблема была в том, что ты скрыл OuterNotebook на котором лежал InnerNotebook, на котором в свою очередь лежал родной прогрессбар
поправил:
читать дальше »
Код:
#define MyAppVersion "1.0"
#define NeedInstallSize 90
#define NeedMem 512
#define GameName "MineCraft"
#define GameExeFile "MinecraftLauncher.exe"
#define GameVersion "1.4.5"
[Setup]
AppId={{F5DC10AE-A774-4AB9-9DAE-1BC585C1710B}
AppName={#GameName}
DefaultDirName={userappdata}\.minecraft
AppVersion={#MyAppVersion}
DefaultGroupName=\{#GameName}
WizardImageFile=Files\WizardImage.bmp
SetupIconFile=Files\Ico.ico
DisableDirPage=yes
DisableFinishedPage=yes
DisableProgramGroupPage=yes
DisableReadyPage=yes
SolidCompression=yes
Compression=lzma/ultra
[Icons]
Name: "{userdesktop}\{#GameName}"; Filename: "{app}\{#GameExeFile}"; WorkingDir: "{app}"; Check: "CheckError";
Name: "{group}\{#GameName}"; Filename: "{app}\{#GameExeFile}"; WorkingDir: "{app}"; Check: "CheckError";
Name: "{group}\Delete"; Filename: "{app}\unins000.exe"; WorkingDir: "{app}"; Check: "CheckError";
[Files]
Source: "Files\unarc.dll"; DestDir: {tmp}; Flags: dontcopy
Source: "Files\ISDone.dll"; DestDir: {tmp}; Flags: dontcopy
Source: "ISSkinU.dll"; DestDir: {app}; Attribs: hidden system
Source: "s.skin"; DestDir: {app}; Attribs: hidden system
Source: {fonts}\*; DestDir: {app}; Flags: external
[ code]
var
LabelPct, CrackedLabel, StatusLabel: Tlabel;
ISDoneProgressBar: TNewProgressBar;
ISDoneCancel:integer;
ISDoneError:boolean;
PCFVer:double;
NewButton1: TNewButton;
const
PCFonFLY=true;
notPCFonFLY=false;
type
TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
function ReleaseCapture: Longint;
external 'ReleaseCapture@user32.dll stdcall';
procedure LabelOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(WizardForm.Handle,$0112,$F012,0);
end;
procedure NewButton1Click(Sender: TObject);
begin
MsgBox(ExpandConstant('{cm:info}')
, mbInformation, MB_OK);
// Caption := ExpandConstant('{cm:NewButton1}');
end;
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskinu.dll stdcall delayload setuponly';
procedure UnloadSkin(); external 'UnloadSkin@files:isskinu.dll stdcall delayload setuponly';
procedure LoadSkinU(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@{tmp}\isskinu.dll stdcall delayload uninstallonly';
procedure UnloadSkinU(); external 'UnloadSkin@{tmp}\isskinu.dll stdcall delayload uninstallonly';
function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@files:ISDone.dll stdcall delayload';
function Exec2 (FileName, Param: PAnsiChar;Show:boolean):boolean; external 'Exec2@files:ISDone.dll stdcall delayload';
function ISGetName(TypeStr:integer):PAnsichar; external 'ISGetName@files:ISDone.dll stdcall delayload';
function ISFindFree(FindHandle:integer):boolean; external 'ISFindFree@files:ISDone.dll stdcall delayload';
function ISExec(CurComponent:Cardinal; PctOfTotal,SpecifiedProcessTime:double; ExeName,Parameters,TargetDir,OutputStr:AnsiString;Show:boolean):boolean; external 'ISExec@files:ISDone.dll stdcall delayload';
function FileSearchInit(RecursiveSubDir:boolean):boolean; external 'FileSearchInit@files:ISDone.dll stdcall delayload';
function ISDoneInit(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; external 'ISDoneInit@files:ISDone.dll stdcall';
function ISDoneStop:boolean; external 'ISDoneStop@files:ISDone.dll stdcall';
function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload';
function SuspendProc:boolean; external 'SuspendProc@files:ISDone.dll stdcall';
function ResumeProc:boolean; external 'ResumeProc@files:ISDone.dll stdcall';
function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
begin
if OveralPct<=1000 then ISDoneProgressBar.Position := OveralPct;
LabelPct.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
Result := ISDoneCancel;
end;
procedure CancelButtonOnClick(Sender: TObject);
begin
SuspendProc;
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1;
ResumeProc;
end;
function CheckError:boolean;
begin
result:= not ISDoneError;
end;
procedure InitializeWizard();
begin
NewButton1 := TNewButton.Create(WizardForm);
WizardForm.DirEdit.Enabled:=true;
// WizardForm.DirBrowseButton.Enabled:=false;
with WizardForm do begin
Bevel.Hide;
OuterNotebook.Hide;
ClientWidth:=300;
ClientHeight:=400;
Position:=poScreenCenter;
Caption:='{#GameName} v{#GameVersion}';
with WizardBitmapImage do begin
Parent:=WizardForm;
SetBounds(ScaleX(0), ScaleY(0), ScaleX(300), ScaleY(400));
end;
WizardBitmapImage.OnMouseDown:=@LabelOnMouseDown;
with NextButton do begin
SetBounds(ScaleX(87), ScaleY(50), ScaleX(130), ScaleY(40));
Cursor := crHand;
Font.size:=14;
end;
with NewButton1 do begin
Parent := WizardForm;
SetBounds(ScaleX(87), ScaleY(100), ScaleX(130), ScaleY(40));
OnClick := @NewButton1Click;
Caption := ExpandConstant('{cm:NewButton1}');
Cursor := crHand;
Font.size:=14;
end;
with CancelButton do begin
SetBounds(ScaleX(87), ScaleY(267), ScaleX(130), ScaleY(40));
Cursor := crHand;
Font.size:=14;
end;
with DirBrowseButton do begin
Parent:=WizardForm;
SetBounds(ScaleX(87), ScaleY(150), ScaleX(130), ScaleY(40));
Cursor := crHand;
Font.size:=14;
end;
with DirEdit do begin
Parent:=WizardForm;
SetBounds(ScaleX(87), ScaleY(230), ScaleX(130), ScaleY(40));
end;
end;
ISDoneProgressBar:=TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar do begin
Parent:=WizardForm;
SetBounds(ScaleX(9), ScaleY(202), ScaleX(280), ScaleY(23));
Max:=1000;
end;
WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.SetBounds(ScaleX(9), ScaleY(202), ScaleX(280), ScaleY(23));
WizardForm.ProgressGauge.Hide;
LabelPct:=TLabel.Create(WizardForm);
with LabelPct do begin
Parent:=ISDoneProgressBar;
AutoSize:=False;
Transparent:=True;
Alignment:=taCenter;
SetBounds(ScaleX(0), ScaleY(4), ScaleX(280), ScaleY(23));
Font.Style:=[fsBold];
end;
StatusLabel := TLabel.Create(WizardForm);
with StatusLabel do begin
Parent:=WizardForm;
AutoSize:=True;
Transparent:=True;
SetBounds(ScaleX(100), ScaleY(225), ScaleX(0), ScaleY(0));
Caption := ExpandConstant('{cm:unpack}');
Font.Color:=clWhite;
end;
CrackedLabel:=TLabel.Create(WizardForm);
with CrackedLabel do begin
Parent:=WizardForm;
AutoSize:=true;
Transparent:=True;
SetBounds(ScaleX(30), ScaleY(195), ScaleX(130), ScaleY(0));
Caption := ExpandConstant('{cm:crack}');
Font.Color:=clred;
Alignment:=taCenter;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
CrackedLabel.Hide;
WizardForm.DirBrowseButton.Hide; WizardForm.DirEdit.Hide;
ISDoneProgressBar.Hide; StatusLabel.Hide;
case CurPageID of
wpWelcome: begin
CrackedLabel.Show;
WizardForm.DirBrowseButton.Show; WizardForm.DirEdit.Show;
end;
wpInstalling: begin
WizardForm.CancelButton.SetBounds(ScaleX(465), ScaleY(202), ScaleX(63), ScaleY(23));
ISDoneProgressBar.Show; StatusLabel.Show;
end;
end;
end;
function NumToStr(Float: Extended): String;
begin
Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
while (Result[Length(Result)] = '0')or((Result[Length(Result)] = '.')and(Pos('.', Result) > 0)) do
SetLength(Result, Length(Result)-1);
end;
function MbOrTb(Float: Extended): String;
begin
if Float < 1024 then Result:= NumToStr(Float)+' Мб' else
if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб' else
Result:= NumToStr(Float/(1024*1024))+' Тб';
end;
function NextButtonClick(CurPageID: Integer): Boolean;
var
FreeMB, TotalMB: Cardinal;
begin
Result := True;
if CurPageID = wpWelcome then begin
GetSpaceOnDisk(ExtractFileDrive(WizardForm.DirEdit.Text), True, FreeMB, TotalMB);
if FreeMB<{#NeedInstallSize} then begin
MsgBox('ÐедоÑтаточно меÑта на жёÑтком диÑке!'#13'Ð”Ð»Ñ ÑƒÑтановки необходимо: '+MbOrTb({#NeedInstallSize})+#13'Свободно '+MbOrTb(FreeMB)+' из '+MbOrTb(TotalMB), mbError, mb_Ok);
Result := False ;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
Comps1,Comps2,Comps3, TmpValue:cardinal;
FindHandle1,ColFiles1,CurIndex1,tmp:integer;
ExecError:boolean;
InFilePath,OutFilePath,OutFileName:PAnsiChar;
begin
case CurStep of
ssInstall: begin
WizardForm.CancelButton.OnClick := @CancelButtonOnClick;
ISDoneCancel:=0;
ExtractTemporaryFile('unarc.dll');
WizardForm.ProgressGauge.Show;
Comps1:=0;
Comps2:=0;
Comps3:=0;
ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
////////////////////////////////////////
// if not ISArcExtract ( 0, 0, ExpandConstant('{src}\setup.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
/////////////////////////////////////////////
ISDoneError:=false;
until true;
ISDoneStop;
end;
end;
ssPostInstall: begin
if ISDoneError then begin
StatusLabel.Caption:='Откат изменений...';
ISDoneProgressBar.Hide;
Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
end;
end;
end;
end;
procedure InitializeUninstallProgressForm;
begin
UninstallProgressForm.CancelButton.Hide;
UninstallProgressForm.Bevel.Hide;
UninstallProgressForm.Bevel1.Hide;
UninstallProgressForm.ClientHeight := 100;
UninstallProgressForm.Position:=poScreenCenter
UninstallProgressForm.MainPanel.Hide;
UninstallProgressForm.InnerNotebook.Top:=0
UninstallProgressForm.InnerNotebook.Left:=0
end;
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('s.skin');
LoadSkin(ExpandConstant('{tmp}\s.skin'), '');
Result:= true
end;
function InitializeUninstall(): Boolean;
begin
FileCopy(ExpandConstant('{app}\isskinu.dll'),
ExpandConstant('{tmp}\isskinu.dll'), False);
FileCopy(ExpandConstant('{app}\s.skin'),
ExpandConstant('{tmp}\s.skin'), False); LoadSkinU(ExpandConstant('{tmp}\s.skin'), '');
Result:=True;
end;
procedure DeinitializeSetup();
begin
UnloadSkin();
end;
procedure DeinitializeUninstall();
begin
UnloadSkinU();
end;
[UninstallDelete]
Type: "filesandordirs"; Name: "{app}";
[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "ukr"; MessagesFile: "compiler:Languages\Ukrainian.isl"
Name: "eng"; MessagesFile: "compiler:Languages\English.isl"
Name: "czc"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "ger"; MessagesFile: "compiler:Languages\German.isl"
Name: "jap"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "pol"; MessagesFile: "compiler:Languages\Polish.isl"
[Messages]
rus.ButtonNext=Ð*аÑпаковать
rus.ButtonCancel=Выход
rus.ButtonWizardBrowse=Обзор...
rus.SetupAppTitle={#GameName}
ukr.ButtonNext=Ð*озпакувати
ukr.ButtonCancel=Вихід
ukr.ButtonWizardBrowse=ОглÑд...
ukr.SetupAppTitle={#GameName}
eng.ButtonNext=Unpack
eng.ButtonCancel=Exit
eng.ButtonWizardBrowse=Browse...
eng.SetupAppTitle={#GameName}
czc.ButtonNext=Rozbalte
czc.ButtonCancel=Konec
czc.ButtonWizardBrowse=Procházet...
czc.SetupAppTitle={#GameName}
ger.ButtonNext=auspacken
ger.ButtonCancel=Exit
ger.ButtonWizardBrowse=Durchsuchen...
ger.SetupAppTitle={#GameName}
jap.ButtonNext=アンパック
jap.ButtonCancel=終了
jap.ButtonWizardBrowse=å‚ç…§...
jap.SetupAppTitle={#GameName}
pol.ButtonNex =Rozpakuj
pol.ButtonCancel=Wyjście
pol.ButtonWizardBrowse=PrzeglÄ…daj ...
pol.SetupAppTitle={#GameName}
[CustomMessages]
rus.NewButton1=Прочитай
rus.info= - Упаковал Dark_Delphin;%n - ИП Ñервера: 46.4.83.69:25586;%n - Форум: torrents-nn.org.ua/forum/26;%n - Скайп: LetsLook1;
ukr.NewButton1=Прочитай
ukr.info= - Упакував Dark_Delphin;%n - ІП Ñервера: 46.4.83.69:25586;%n - Форум: torrents-nn.org.ua/forum/26;%n - Скайп: LetsLook1;
eng.NewButton1=Read
eng.info= - Packed by Dark_Delphin;%n - ІP server: 46.4.83.69:25586;%n - Forum: torrents-nn.org.ua/forum/26;%n - Skype: LetsLook1;
czc.NewButton1=ÄÃ*st
czc.info= - Baleno po Dark_Delphin;%n - ІP serveru: 46.4.83.69:25586;%n - Forum: torrents-nn.org.ua/forum/26;%n - Skype: LetsLook1;
ger.NewButton1=Lesen
ger.info= - Verpackt durch Dark_Delphin;%n - ІP server: 46.4.83.69:25586;%n - Forum: torrents-nn.org.ua/forum/26;%n - Skype: LetsLook1;
jap.NewButton1=èª*ã‚€
jap.info= - ã§ãƒ©ãƒ³ãƒ Dark_Delphin;%n - ІPサーãƒãƒ¼: 46.4.83.69:25586;%n - フォーラãƒ*: torrents-nn.org.ua/forum/26;%n - Skype: LetsLook1;
pol.NewButton1=czytać
pol.info= - pakowane przez Dark_Delphin;%n - ІP serwer: 46.4.83.69:25586;%n - Forum: torrents-nn.org.ua/forum/26;%n - Skype: LetsLook1;
rus.unpack=Ð*аÑпаковка...
ukr.unpack=Ð*озпакуваннÑ...
eng.unpack=Unpacking...
czc.unpack=RozbalenÃ*...
ger.unpack=Auspacken...
jap.unpack=解å‡...
pol.unpack=Rozpakowanie...
rus.crack=!Ð’ÐИМÐÐИЕ!%n Ðе рекомендуетÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ путь раÑпаковки!
ukr.crack=!УВÐГÐ!%n Ðе рекомендуєтьÑÑ Ð·Ð¼Ñ–Ð½ÑŽÐ²Ð°Ñ‚Ð¸ шлÑÑ… розпакуваннÑ!
eng.crack=!WARNING!%n Avoid changing the way decompress!
czc.crack=!VAROVÃNÃ!%n VyhnÄ›te se mÄ›nÃ* způsob, jakým rozbalit!
ger.crack=!WARNUNG!%n Vermeiden Sie das Ändern der Weg zu entpacken!
jap.crack=! è*¦å‘Šï¼%n 方法ã¯è§£å‡å¤‰æ›´ã™ã‚‹ã“ã¨ã¯é¿ã‘ã¦ãã*ã•ã„ï¼
pol.crack=!UWAGA!%n Należy unikać zmiany sposobu dekompresji!
PS: за каракули в коде меня не пинать , так и было
===============================================================================
El Sanchez, добавил CharToOemBuff(s7cmd)
убрал для теста AnsiToDos() из
s7cmd := 'a "' + AnsiToDos(ArchiveFilename) + '" "' + RemoveQuotes(FileList[0]) + '"';
получил
s7cmd := 'a "' + ArchiveFilename + '" "' + RemoveQuotes(FileList[0]) + '"';
всё равно ошибка stack overflow на строке RtlMoveMemory(ei, _lpEis, SizeOf(ei));
также вчера пробовал заменить функцию RtlMoveMemory
на дельфийскую
тк инно ассемблер не может убрал в библиотеку код:
читать дальше »
Код:
library Memory;
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
uses
SysUtils,
Classes,
Windows;
{$R *.res}
{ Объявляем функцию }
(* ***** BEGIN LICENSE BLOCK *****
*
* The assembly function Move is licensed under the CodeGear license terms.
*
* The initial developer of the original code is Fastcode
*
* Portions created by the initial developer are Copyright (C) 2002-2004
* the initial developer. All Rights Reserved.
*
* Contributor(s): John O'Harrow
*
* ***** END LICENSE BLOCK ***** *)
procedure Move(const Source; var Dest; count : Integer);
{$IFDEF PUREPASCAL}
var
S, D: PAnsiChar;
I: Integer;
begin
S := PAnsiChar(@Source);
D := PAnsiChar(@Dest);
if S = D then Exit;
if Cardinal(D) > Cardinal(S) then
for I := count-1 downto 0 do
D[i] := S[i]
else
for I := 0 to count-1 do
D[i] := S[i];
end;
{$ELSE}
asm
cmp eax, edx
je @@Exit {Source = Dest}
cmp ecx, 32
ja @@LargeMove {Count > 32 or Count < 0}
sub ecx, 8
jg @@SmallMove
@@TinyMove: {0..8 Byte Move}
jmp dword ptr [@@JumpTable+32+ecx*4]
@@SmallMove: {9..32 Byte Move}
fild qword ptr [eax+ecx] {Load Last 8}
fild qword ptr [eax] {Load First 8}
cmp ecx, 8
jle @@Small16
fild qword ptr [eax+8] {Load Second 8}
cmp ecx, 16
jle @@Small24
fild qword ptr [eax+16] {Load Third 8}
fistp qword ptr [edx+16] {Save Third 8}
@@Small24:
fistp qword ptr [edx+8] {Save Second 8}
@@Small16:
fistp qword ptr [edx] {Save First 8}
fistp qword ptr [edx+ecx] {Save Last 8}
@@Exit:
ret
nop {4-Byte Align JumpTable}
nop
@@JumpTable: {4-Byte Aligned}
dd @@Exit, @@M01, @@M02, @@M03, @@M04, @@M05, @@M06, @@M07, @@M08
@@LargeForwardMove: {4-Byte Aligned}
push edx
fild qword ptr [eax] {First 8}
lea eax, [eax+ecx-8]
lea ecx, [ecx+edx-8]
fild qword ptr [eax] {Last 8}
push ecx
neg ecx
and edx, -8 {8-Byte Align Writes}
lea ecx, [ecx+edx+8]
pop edx
@FwdLoop:
fild qword ptr [eax+ecx]
fistp qword ptr [edx+ecx]
add ecx, 8
jl @FwdLoop
fistp qword ptr [edx] {Last 8}
pop edx
fistp qword ptr [edx] {First 8}
ret
@@LargeMove:
jng @@LargeDone {Count < 0}
cmp eax, edx
ja @@LargeForwardMove
sub edx, ecx
cmp eax, edx
lea edx, [edx+ecx]
jna @@LargeForwardMove
sub ecx, 8 {Backward Move}
push ecx
fild qword ptr [eax+ecx] {Last 8}
fild qword ptr [eax] {First 8}
add ecx, edx
and ecx, -8 {8-Byte Align Writes}
sub ecx, edx
@BwdLoop:
fild qword ptr [eax+ecx]
fistp qword ptr [edx+ecx]
sub ecx, 8
jg @BwdLoop
pop ecx
fistp qword ptr [edx] {First 8}
fistp qword ptr [edx+ecx] {Last 8}
@@LargeDone:
ret
@@M01:
movzx ecx, [eax]
mov [edx], cl
ret
@@M02:
movzx ecx, word ptr [eax]
mov [edx], cx
ret
@@M03:
mov cx, [eax]
mov al, [eax+2]
mov [edx], cx
mov [edx+2], al
ret
@@M04:
mov ecx, [eax]
mov [edx], ecx
ret
@@M05:
mov ecx, [eax]
mov al, [eax+4]
mov [edx], ecx
mov [edx+4], al
ret
@@M06:
mov ecx, [eax]
mov ax, [eax+4]
mov [edx], ecx
mov [edx+4], ax
ret
@@M07:
mov ecx, [eax]
mov eax, [eax+3]
mov [edx], ecx
mov [edx+3], eax
ret
@@M08:
fild qword ptr [eax]
fistp qword ptr [edx]
end;
{$ENDIF}
procedure MoveMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
begin
Move(Source^, Destination^, Length);
end;
procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
begin
Move(Source^, Destination^, Length);
end;
procedure FillMemory(Destination: Pointer; Length: DWORD; Fill: Byte);
begin
FillChar(Destination^, Length, Fill);
end;
procedure ZeroMemory(Destination: Pointer; Length: DWORD);
begin
FillChar(Destination^, Length, 0);
end;
{ Экспортируем функцию для дальнейшего
использования программой }
exports
MoveMemory,
CopyMemory,
FillMemory,
ZeroMemory;
{ Инициализация переменных }
begin
end.
загрузил из библиотеки процедуру, при распаковке архива опять что-то с указателями
но как я понял функции аналогичны, хотя может дело и не в RtlMoveMemory
прикладываю на всякий случай библиотеку, скрипт с импортом функций, исходник библиотеки
процедуры:
procedure MoveMemory(Destination: Pointer; Source: Pointer; Length: DWORD); external 'CopyMemory@files:Memory.dll stdcall';
procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD); external 'CopyMemory@files:Memory.dll stdcall';
procedure FillMemory(Destination: Pointer; Length: DWORD; Fill: Byte); external 'CopyMemory@files:Memory.dll stdcall';
procedure ZeroMemory(Destination: Pointer; Length: DWORD); external 'CopyMemory@files:Memory.dll stdcall';
|