J'utilise ce code pour joindre un fichier en tant que ressource à un fichier exécutable:problème avec UpdateResource (Mémoire insuffisante)
interface
type
TBuffer = Array [0 .. 0] of Byte;
PBuffer = ^TBuffer;
Procedure AttachFile();
var
DataLength: DWord;
Data: PBuffer;
begin
FS := TFileStream.Create(Filename, fmOpenRead);
try
FS.Seek(0, soFromBeginning);
DataLength := FS.Size;
GetMem(Data, DataLength);
FS.Read(Data^, DataLength);
finally
FS.Free;
end;
UpdateResource(ResourceHandle, RT_RCDATA, pchar('ResName'),
0, Data, DataLength);
EndUpdateResource(ResourceHandle, false);
end;
Le problème est que quand je veux joindre un Larg
(1 Go par exemple) fichier en utilisant ce code, je vais recevoir cette erreur: Out of memory
.
J'ai essayé aussi de diviser mon dossier à des parties plus petites (par exemple: 100 Mo) et le fixer à l'aide d'un for ring
mais il ne fonctionne toujours pas et je reçois Out of memory
Vous attachez une ressource de 1 Go. Pourquoi? Etes-vous sûr de savoir qui utilise une ressource pour stocker ce fichier plus volumineux est la bonne approche? – RRUZ
J'ai également essayé de diviser mon fichier en parties plus petites (par exemple: 100MB) et de l'attacher en utilisant un 'pour ring' mais ça ne fonctionne toujours pas et je reçois Out of memory – Kermia
Cela me semble étrangement une sorte de malware . Puis-je vous demander pourquoi vous devez joindre un fichier de 1 Go en tant que ressource? (Comme il est très improbable d'allouer un tampon mémoire de 1 Go avec un appel à GetMem avec tout ce qui fonctionne sur votre machine, même avec 4 Go de RAM, il est très improbable que vous puissiez accéder à une ressource de 1 Go sur une autre machine Cela m'a amené à croire que votre 'ressource' est quelque chose que vous essayez de vous faufiler sur l'autre machine sans être remarqué, ce qui me fait penser que vous ne faites rien de bon ...) –