Stocarea datelor într-un EXE
Nu spune nimănui de masterat respectate, modul de a stoca date în EXE fișierele pe care programul executabil. Și pe măsură ce citesc atunci când începe? Mulțumesc.
Am înțeles că scrie programe sub Windows. atunci răspunsul este „nimic“, deoarece blocuri de sisteme de operare pentru a scrie și șterge fișierul executabil al programului.
ca o alternativă - puteți scrie la registru, acesta este creat.
Adică, eu nu pot păstra nici o ARRAY, descrisă în corpul programului, în dosarul său, și apoi salvat ca un fișier cu date de componente ClientDataset în EXE.
Creați un proces suplimentar, care va aștepta finalizarea tău îndoire, apoi scrie în shnik Ehe și se închide.
datele pot fi stocate în resursa
și chiar are o funcție pentru a economisi resurse
dar eu nu le polzomalsya, așa experiment. )
Puteți stoca toate pur și simplu închideți mai întâi programul.
IMHO oameni întrebat exact în cazul în care toate aceste lucruri este posibil (resurse acolo zagolovoy exe-Schnick, sau ce altceva este acolo.), Și cu ajutorul a ceea ce exact funcțiile / procedurile și apoi citit-o? O înregistrare este colectată prin alte instrumente.
Absolut. Deoarece Delphi vă permite să stocați, de exemplu, imagini în corpul EXE. Cum de a realiza același lucru pentru datele lor.
Am încercat să fac un astfel de lucru. Funcționează, dar algoritmul în sine urât și curba.
Când se execută eheshnike-l, aveți posibilitatea să copiați un număr cu un alt nume. Atribuit această copie la sfârșitul fiecare bucată de date (verificate - eheshnik va funcționa în continuare). Înainte de finalizarea programului pentru a crea un fișier batch, care este de a elimina eheshnik principal, și redenumiți copia principalului obligat. Pe termen următoare poate fi considerată ca date binare convențional.
Adevărat antivirusniki poate jura pe aceste fișiere cu note suplimentare - le suspectează de a malware-ului, care, în general, este departe de adevar :)
cum să citească - în opinia mea, puteți face acest lucru: la începutul blocului de date sa pui un fel de marca - de exemplu, un șir variabil = „mylabel“; apoi din programul va deschideti (exe-Schnick) în timpul rulării și sunt în căutarea pentru acea etichetă - după ce, respectiv, sunt datele
și în prsto codul le plasa sub ciocan - după această etichetă foarte
apoi lectură blockread citit vperemennuyu de același tip
dar, în cazul în care să scrie, și ca un loc pentru a găsi o înregistrare sub - nu știu, eu pot sugera două opțiuni: fie antet exe-persoană, sau în loc de resurse, un loc în care din nou l uita din nou la începutul resursei - eticheta
mai scurt - despre astfel de idei. el nu a încercat, deși merge
2lipskiy:
înregistrare de modul în care, puteți crea în continuare-ku dll și rulează-l prin rundll32.exe - deci este posibil și să se frecate
Da, este necesar să se ia Che și înregistrate la sfârșitul atunci considerat normal ar trebui să funcționeze
Interioară EXE scris ca:
Procedura TForm1.Button1Click (Expeditor: TObject);
var
Filehandle: integer;
s: string [10];
începe
dacă edit1.text<>„“ Atunci
începe
s: = edit1.Text;
Filehandle: = FileOpen ( "1.exe", fmOpenReadWrite);
FileSeek (filehandle, sizeof (s), 2);
FileWrite (filehandle, s, sizeof (e));
FileClose (filehandle);
se încheie;
se încheie;
O citește după cum urmează:
Procedura TForm1.Button2Click (Expeditor: TObject);
var
Filehandle: integer;
s: string [10];
începe
Filehandle: = FileOpen ( "1.exe", fmOpenReadWrite);
FileSeek (filehandle, -SizeOf (s), 2);
FileRead (filehandle, s, sizeof (e));
ShowMessage (s);
FileClose (filehandle);
se încheie;
Dar pentru a salva matrice în loc sizeof (s) împunsătură
Sizeof (a [1]) * KolvoElementovMassiva
Deci, metoda este potrivit doar pentru stocarea de matrici tipuri standard (Integer, Real, String etc.) pentru tipurile structurate nu sunt verificate.
Vă mulțumesc tuturor, dar dureros într-un fel neglijent (nu pretinde la toate compasiune, și doar ciudat că nu este nimic mai ușor)
Ceea ce nu înțeleg ce această flacără? O persoană nu trebuie să, așa că cel puțin ar trebui să schimbe datele, este necesar pur și simplu să țină în afara întrebării, atunci răspunsul este același: resursele.
> Kon (25.03.02 01:13)
Da, nu este de fapt atât de dificil. Dacă nu trebuie să modificați datele, atunci resursa este ceea ce ai nevoie. Resursele de fapt, acesta este doar datele binare, adică Firește, ele pot fi ceea ce vrei să le vezi eu. tipuri standard de resurse există numai pentru a facilita lucrul cu resursele cele mai frecvent utilizate. Tot ce trebuie să faceți este să creați un tip de resurse, și a pus datele lor, și apoi să lucreze cu ei cu ajutorul API f-tiile
FindResource, FindResourceEx, LockResource, LoadResource sau pot fi utilizate pentru aceste scopuri de clasă TResourceStream. Dar, din nou, repet, datele vor fi read-only.
Memorie: 0,75 MB
Timpul: 0,033 c