![]() |
|
فحص الـ الصور jpg قبل تشغيل البرنامج - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : فحص الـ الصور jpg قبل تشغيل البرنامج (/showthread.php?tid=2480) |
فحص الـ الصور jpg قبل تشغيل البرنامج - روح المساء - 09-10-2010 السلام عليكم ورحمة الله وبركاته عندي صورة Jpg على الفورم كيف يفحص البرنامج نفسه ولا يعمل اذا تم تعديل الصورة ؟ يعني لو فكر المستخدم تغيير الصورة ببرنامج ResHacker أو Resource Tuner فحص الـ الصور jpg قبل تشغيل البرنامج - kachwahed - 09-10-2010 وعليكم السلام ورحمة الله وبركاته فحص حجم الصورة: كود : function ReadMWord(f: TFileStream): Word;
type
TMotorolaWord = record
case Byte of
0: (Value: Word);
1: (Byte1, Byte2: Byte);
end;
var
MW: TMotorolaWord;
begin
{ It would probably be better to just read these two bytes in normally }
{ and then do a small ASM routine to swap them. But we aren't talking }
{ about reading entire files, so I doubt the performance gain would be }
{ worth the trouble. }
f.read(MW.Byte2, SizeOf(Byte));
f.read(MW.Byte1, SizeOf(Byte));
Result := MW.Value;
end;
procedure GetJPGSize(const sFile: string; var wWidth, wHeight: Word);
const
ValidSig: array[0..1] of Byte = ($FF, $D8);
Parameterless = [$01, $D0, $D1, $D2, $D3, $D4, $D5, $D6, $D7];
var
Sig: array[0..1] of byte;
f: TFileStream;
x: integer;
Seg: byte;
Dummy: array[0..15] of byte;
Len: word;
ReadLen: LongInt;
begin
FillChar(Sig, SizeOf(Sig), #0);
f := TFileStream.Create(sFile, fmOpenRead);
try
ReadLen := f.read(Sig[0], SizeOf(Sig));
for x := Low(Sig) to High(Sig) do
if Sig[x] <> ValidSig[x] then ReadLen := 0;
if ReadLen > 0 then
begin
ReadLen := f.read(Seg, 1);
while (Seg = $FF) and (ReadLen > 0) do
begin
ReadLen := f.read(Seg, 1);
if Seg <> $FF then
begin
if (Seg = $C0) or (Seg = $C1) then
begin
ReadLen := f.read(Dummy[0], 3); { don't need these bytes }
wHeight := ReadMWord(f);
wWidth := ReadMWord(f);
end
else
begin
if not (Seg in Parameterless) then
begin
Len := ReadMWord(f);
f.Seek(Len - 2, 1);
f.read(Seg, 1);
end
else
Seg := $FF; { Fake it to keep looping. }
end;
end;
end;
end;
finally
f.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
wWidth, wHeight: Word;
begin
if OpenPictureDialog1.Execute then
GetJPGSize(OpenPictureDialog1.FileName, wWidth, wHeight);
Caption := IntToStr(wWidth) + ' X ' + IntToStr(wHeight);
end;للتنبيه: هذا غير كاف لحماية مصادر التطبيق من العبث! بالتوفيق. فحص الـ الصور jpg قبل تشغيل البرنامج - روح المساء - 10-10-2010 طيب هل لديك طريقة لحماية المصادر أخي ؟ الكود الظاهر يقرأ المقاس و أنا أقصد الحجم بمعنى بالكيلو بايت . فحص الـ الصور jpg قبل تشغيل البرنامج - kachwahed - 10-10-2010 [COLOR="black"] إقتباس :و أنا أقصد الحجم بمعنى بالكيلو بايت .تقصد حجم الملف: http://www.delphi4arab.net/forum/showpost.php?p=19960&postcount=2 إقتباس :طيب هل لديك طريقة لحماية المصادر أخي ؟الأفضل فحص Hash (ابحث في المنتدى)، أو برامج حماية التطبيقات.[/COLOR] فحص الـ الصور jpg قبل تشغيل البرنامج - روح المساء - 10-10-2010 طيب كيف أستخدم الـ Hash Md5 , CRC32 , وغيرها ؟ فحص الـ الصور jpg قبل تشغيل البرنامج - TF6M - 10-10-2010 السلام عليكم مكتبات-خوارزميات التشفير والهاش كيفية يتم حماية البرنامج بعد برمجته بالتوفيق,, فحص الـ الصور jpg قبل تشغيل البرنامج - kachwahed - 10-10-2010 خويا tf6m بارك الله فيك شكرا على التعاون ![]() فحص الـ الصور jpg قبل تشغيل البرنامج - روح المساء - 10-10-2010 أشكركم على التعاون ساعدتوني بصراحة |