مدرسه دلفي

تبديل فرمت گرافيکی ۲
نویسنده : مهدی جوادی - ساعت ٧:۳٩ ‎ب.ظ روز سه‌شنبه ٢٢ شهریور ،۱۳۸٤
 
گروه: گرافيك
نوع عمليات: تبديل قالب گرافيكي .Wmf به .Bmp






procedure BmpToWmf(BmpFile, WmfFile: string);
var
MetaFile: TMetaFile;
MFCanvas: TMetaFileCanvas;
BMP: TBitmap;
begin
{Create temps}
MetaFile := TMetaFile.Create;
try
BMP := TBitmap.Create;
try
BMP.LoadFromFile(BmpFile);
{Equalizing sizes}
MetaFile.Height := BMP.Height;
MetaFile.Width := BMP.Width;

{Create a canvas for the Metafile}
MFCanvas := TMetafileCanvas.Create(MetaFile, 0);
try
{Draw the BMP into the canvas}
MFCanvas.Draw(0, 0, BMP);
{Free the Canvas}
finally
MFCanvas.Free;
end;
finally
{Free the BMP}
BMP.Free;
end;
{Save the Metafile}
MetaFile.SaveToFile(WmfFile);
finally
{Free it}
MetaFile.Free;
end;
end;



نحوه فراخواني تابع:
Wmf2Bmp('c:\test.bmp','c:\test.wmf');
 
comment نظرات ()
 
 
نویسنده : مهدی جوادی - ساعت ۱٢:٢۱ ‎ق.ظ روز سه‌شنبه ٢٢ شهریور ،۱۳۸٤
 

 
comment نظرات ()
 
شروعی دوباره
نویسنده : مهدی جوادی - ساعت ۱٢:۱٧ ‎ق.ظ روز سه‌شنبه ٢٢ شهریور ،۱۳۸٤
 
سلام به همه دلفي كارا (چشمك)

اونايي كه قبلا مطالب اين وبلاگو تعقيب مي كردن اگه زور بزنن يادشون مياد كه من مطالبي رو در زمينه دلفي جمع آوري كرده بودم و در قالب يك كتاب جا داده بودم. عواملي دست به دست هم دادن كه من موفق به چاپ كتابم نشم و اين خيلي برام سخت بود چون خيلي براي اين كتاب زحمت كشيده بودم و ....
يه چند وقته كه ديگه سفارش كار ندارم و فكر مي كنم كه بتونم تا چند صباحي به درج مطالب در اين آدرس بپردازم و ...
از امروز به بعد به طور روزانه به درج برخي از مطالب كتابي كه هنوز چاپ نشده در اينجا مي كنم تا حداقل دوستان علاقمند به دلفي به اين توابع دسترسي پيدا كنن (پيشاپيش از اساتيد و پيشكسوتان به دليل بدرد نخور بودن مطالب عذر خواهي مي كنم)

ضمنا از دوستاني كه نسبت به اين وبلاگ لطف داشته اند تشكر و قدرداني مي كنم.
 
comment نظرات ()
 
ادامه بدم يا ندم؟
نویسنده : مهدی جوادی - ساعت ۱:۱٦ ‎ب.ظ روز سه‌شنبه ۱۳ اردیبهشت ،۱۳۸٤
 
به نظر شما من دوباره شروع به نوشتن مطالب بکنم يا نه؟
 
comment نظرات ()
 
File Coder
نویسنده : مهدی جوادی - ساعت ۸:٠٤ ‎ب.ظ روز پنجشنبه ۱ اردیبهشت ،۱۳۸٤
 
شما با اين برنامه مي تونيد قايلهاتونو كد كنيد.
اگه فايلي داريد كه نمي خواهيد كسي از اون استفاده كنه از اين برنامه استفاده كنيد.
كار با اين برنامه خيلي راحته.
- انتخاب نوع عمليات.(كد: براي كد كردن فايل. ديكد: براي باز كردن فايل كد شده)
- كلمه عبور 10 حرفي رو انتخاب كنيد.
- فراخواني فايل مورد نظر. (ضمنا توجه كنيد اين فايل نبايد در حالت ReadOnly باشد).
- حالا مي توانيد عمليات (كد/ديكد) را شروع كنيد.


اميدوارم از اين برنامه خوشتون بياد
اين برنامه كه خيلي به درد من خورده شايدم به درد شما هم بخوره.

www.sharemation.com/mjmj/prg/fc1.0.zip
 
comment نظرات ()
 
ساخت تصوير منفي (Negative)
نویسنده : مهدی جوادی - ساعت ٢:۱٥ ‎ب.ظ روز دوشنبه ۳٠ شهریور ،۱۳۸۳
 
ديگه خيلي توضيح نمي دم. با ديدن سورس برنامه خودتون همه رو متوجه ميشيد.
دستوراتي كه در اين برنامه از آنها استفاده مي شود:
getrvalueوgetgvalueوgetbvalueوrgb
ابزارها:
tbitmapوopenpicturedialogوimage

سورس تابع:
***********************
function navigate(pixel:tcolor):tcolor;
var
r,g,b:byte;
begin
r:=getrvalue(pixel);
r:=255-r;
g:=getgvalue(pixel);
g:=255-g;
b:=getbvalue(pixel);
b:=255-b;
result:=rgb(r,g,b);
end;

سورس برنامه:
**********************
procedure TForm1.Button1Click(Sender: TObject);
var
bmp:tbitmap;
fname:string;
x,y:integer;
begin
if openpicturedialog1.Execute then
fname:=openpicturedialog1.FileName
else
exit;
bmp:=tbitmap.Create;
bmp.LoadFromFile(fname);
for x:=0 to bmp.Width-1 do
for y:=0 to bmp.Height do
bmp.Canvas.Pixels[x,y]:=navigate(bmp.Canvas.Pixels[x,y]);
image1.Picture.Bitmap:=bmp;
image1.Repaint;
bmp.Free;

end;
************************************************

 
comment نظرات ()
 
روشی ديگر برای قيمت گذاری نرم افزار - CoCoMo
نویسنده : مهدی جوادی - ساعت ۱٠:۱٤ ‎ب.ظ روز دوشنبه ٢٢ تیر ،۱۳۸۳
 
روش CoCoMo يکی از رايجترين روشها برای قيمت گذاری نرم افزار می باشد.

 
comment نظرات ()
 
 
نویسنده : مهدی جوادی - ساعت ٦:٠٤ ‎ب.ظ روز دوشنبه ۱٥ تیر ،۱۳۸۳
 
اين چند روزه يکمی سرم خلوت ميشه حتما ميامو به اينجا يه سر و سامونی می دم. فعلا....
 
comment نظرات ()
 
Function Point
نویسنده : مهدی جوادی - ساعت ٥:٢٦ ‎ب.ظ روز جمعه ۱٢ تیر ،۱۳۸۳
 
روشی دیگر برای قیمت گذاری نرم افزار.
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\

 
comment نظرات ()
 
Function Point
نویسنده : مهدی جوادی - ساعت ٥:٢٥ ‎ب.ظ روز جمعه ۱٢ تیر ،۱۳۸۳
 

 
comment نظرات ()
 
روشی برای قيمت گذاری نرم افزار- Line Of Code
نویسنده : مهدی جوادی - ساعت ۱۱:٢٩ ‎ب.ظ روز پنجشنبه ۱۱ تیر ،۱۳۸۳
 
در اين روش ابتدا می بايست قسمتهای مختلف برنامه و تعداد خطوط هر قسمت را نوشته و حاصلجمع تعداد خطوط را محاسبه نمود.

مقادير اوليه:
- تعداد خطوطی را که برنامه نويس در ماه می نويسد (طبق آخرين دستاوردها هر برنامه نويس در ماه ۶۲۰ خط برنامه می نويسد.)
- حقوق ماهيانه برنامه نويس. ( در اين مساله فرض ما ۵۰۰۰۰۰۰ ريال است)
- تعداد برنامه نويسان (فرض ما در اين مساله ۴ نفر می باشد)

محاسبات:
- زمان لازم برای اجرای پروژه:
زمان = نفرات / نفر در ماه = تعداد خطوط / تعداد کل خطوط برنامه
- هزینه هر خط:
مبلغ = تعداد خطوط / حقوق ماهیانه
- هزينه کل نرم افزار:
قيمت کل = هزينه هر خط * تعداد خطوط

مثال (برنامه رژيم غذايی):
قسمت برنامه - تعداد خطوط
مدیریت بانک اطلاعاتی - ۳۵۰۰
مدیریت فایلهای کمکی - ۱۵۰۰
تعریف ورودیها - ۳۰۰۰
پردازش بر روی داده ها - ۴۰۰۰
نوع و سطح خروجی - ۱۰۰۰
پشتیبانگیری و بازیابی داده ها - ۷۰۰

تعداد کل خطوط= ۱۳۲۰۰
--------------------------------
۵=۲۲/۴=۱۳۲۰۰/۶۲۰
۸۰۶۵=۵۰۰۰۰۰۰/۶۲۰
۱۰۶۴۵۸۰۰۰=۸۰۶۵*۱۳۲۰۰
==================
این برنامه طی ۵ ماه توسط ۴ برنامه نویس نوشته می شود و قیمت پایه این نرم افزار ۱۰۶۴۵۸۰۰۰ ریال می باشد.
**********************************************
فردا هم یه روش دیگه برای قیمت گذاری رو اینجا میارم.

 
comment نظرات ()
 
پاسخ به سوال
نویسنده : مهدی جوادی - ساعت ٦:۳٦ ‎ب.ظ روز سه‌شنبه ٢٩ اردیبهشت ،۱۳۸۳
 
يکی از بروبچ پرسيده بود که چجوری ميشه که يه کلمه رو توی يه متن پيدا کرد؟
راهای مختلفی برای پياده سازی اين تابع هستش يکی از اين راها اينه که:
خط به خط متنو جدا کنی بعدش با استفاده از يکی از توابع pos يا substr تشخيص بدي كه آيا اون كلمه مورد نظر تو اون خط هستش يا نه؟!

----------------
اميدوارم كه به جوابت رسيده باشي.
 
comment نظرات ()
 
طراحی و برنامه نويسی انواع سيستمهای برنامه نويسی
نویسنده : مهدی جوادی - ساعت ۳:٢٩ ‎ب.ظ روز شنبه ٢٦ اردیبهشت ،۱۳۸۳
 
* آماده سازی نرم افزار در کمترين زمان ممکن
* پشتيبانی مستمر از سيستمهای ارائه شده
* مشاوره در خصوص طراحی نرم افزار
* تدريس خصوصی زبان قدرتمند دلفی
-----------------------------------------------------
طراح و برنامه نويس: مهدی جعفری
شماره تماس: ۰۹۱۲۳۵۱۶۸۳۶
 
comment نظرات ()
 
دو ماه بعد
نویسنده : مهدی جوادی - ساعت ۱٢:۳٠ ‎ب.ظ روز شنبه ۱٩ اردیبهشت ،۱۳۸۳
 

از امروز به بعد بازم درج اراجيف مربوط به دلفی در اينجا آغاز می گردد.

راستی ملت:

هرکی يه برنامه ريکاوری پدر مادر دار داره لطف کنه و اونو به من بده  چون چند وقت پيش هاردم پريد و من فقط تونستم قسمتی از اونو بر گردونم.   جون مادرتون اگه اين برنامه رو دارين به من بدبخت کمک کنييييييييييييييييييييد. از اون روز به بعد نصف کارام تو هواس و......


 
comment نظرات ()
 
اضافه کردن Bitmap به آيتم منو
نویسنده : مهدی جوادی - ساعت ٤:٥٥ ‎ب.ظ روز چهارشنبه ٢٠ اسفند ،۱۳۸٢
 
procedure TForm1.FormCreate(Sender: TObject);
var Picture: TPicture;
begin
Picture:=TPicture.Create;
Picture.LoadFromFile('Plus.BMP');
SetMenuItemBitmaps( PopupMenu1.Handle, 0, MF_BYPOSITION, Picture.Bitmap.Handle, Picture.Bitmap.Handle);
end;

*************
خودمونيم من خيلي ديوونه هستم كه دارم كارمو ادامه ميدما

 
comment نظرات ()
 
چگونه محتويات TCanvas را از بين ببريم؟
نویسنده : مهدی جوادی - ساعت ٤:۳٦ ‎ب.ظ روز یکشنبه ۱٠ اسفند ،۱۳۸٢
 
How to clear a TCanvas very fast?
PatBlt(Image1.Canvas.Handle,0,0,Image1.Width,Image1.Height,WHITENESS); 
Image1.Refresh;

 
comment نظرات ()
 
اعمال چندتا کار کوچولو روی Bitmap
نویسنده : مهدی جوادی - ساعت ٤:٤٤ ‎ب.ظ روز چهارشنبه ٦ اسفند ،۱۳۸٢
 

اگه برای چرخوندن،معکوس کردن و آينه ای کردن يه تصوير مشکلی داريد با دانلود سورس زير مشکلتون حل ميشه. (:

Download


 
comment نظرات ()
 
ذخيره كردن StringGrid در فايل
نویسنده : مهدی جوادی - ساعت ٥:٢٧ ‎ب.ظ روز دوشنبه ٤ اسفند ،۱۳۸٢
 

Save/Load String Grid in file

procedure TForm1.File2StringGrid(StringGrid: TStringGrid; FileName: String); 
var F: TextFile; 
    Tmp, x, y: Integer; 
    TmpStr: string; 
begin 
  AssignFile(F, FileName); 
  Reset(F); 
  Readln(F, Tmp); 
  StringGrid.ColCount:=Tmp; 
  Readln(F, Tmp); 
  StringGrid.RowCount:=Tmp; 
  for x:=0 to StringGrid.ColCount-1 do 
  for y:=0 to StringGrid.RowCount-1 do 
  begin 
    Readln(F, TmpStr); 
    StringGrid.Cells[x,y]:=TmpStr; 
  end; 
  CloseFile(F); 
end; 
procedure TForm1.StringGrid2File(StringGrid: TStringGrid; FileName: String); 
var F: TextFile; 
    x, y: Integer; 
begin 
  AssignFile(F, FileName); 
  Rewrite(F); 
  Writeln(F, StringGrid.ColCount); 
  Writeln(F, StringGrid.RowCount); 
  for x:=0 to StringGrid.ColCount-1 do 
  for y:=0 to StringGrid.RowCount-1 do 
     Writeln(F, StringGrid.Cells[x,y]); 
  CloseFile(F); 
end;

 
comment نظرات ()
 
ERROR های در حين اجرای I/O
نویسنده : مهدی جوادی - ساعت ۱٠:٢٩ ‎ق.ظ روز یکشنبه ۳ اسفند ،۱۳۸٢
 

Runtime I/O errors

1   ¦Invalid function number
2   ¦File not found
3   ¦Path not found
4   ¦Too many open files
5   ¦File access denied
6   ¦Invalid file handle
12  ¦Invalid file access code
15  ¦Invalid drive number
16  ¦Cannot remove current directory
17  ¦Cannot rename across drives
18  ¦No more files
100 ¦Disk read error
101 ¦Disk write error
102 ¦File not assigned
103 ¦File not open
104 ¦File not open for input
105 ¦File not open for output
106 ¦Invalid numeric format
150 ¦Disk is write-protected
151 ¦Bad drive request struct length
152 ¦Drive not ready
154 ¦CRC error in data
156 ¦Disk seek error
157 ¦Unknown media type
158 ¦Sector Not Found
159 ¦Printer out of paper
160 ¦Device write fault
161 ¦Device read fault
162 ¦Hardware failure
200 ¦Division by zero
201 ¦Range check error
202 ¦Stack overflow error
203 ¦Heap overflow error
204 ¦Invalid pointer operation
205 ¦Floating point overflow
206 ¦Floating point underflow
207 ¦Invalid floating point operation
208 ¦Overlay manager not installed
209 ¦Overlay file read error
210 ¦Object not initialized
211 ¦Call to abstract method
212 ¦Stream registration error   
213 ¦Collection index out of range
214 ¦Collection overflow error
215 ¦Arithmetic overflow error
216 ¦General Protection fault

 
comment نظرات ()
 
بدست آوردن عكس موجود در Button
نویسنده : مهدی جوادی - ساعت ٥:٠٦ ‎ب.ظ روز پنجشنبه ۳٠ بهمن ،۱۳۸٢
 

Get image on the button

*************

procedure TForm1.Button1Click(Sender: TObject); 
var Bitmap, Bitmap2: TBitmap; ButHandle: THandle; Rec: TRect; 
begin 
  Bitmap:=TBitmap.Create; 
  Bitmap2:=TBitmap.Create; 
  Bitmap2.LoadFromFile('c:\mybmp.bmp'); 
  Rec:=Rect(2, 2, Button1.Width-2, Button1.Height-2); 
  ButHandle:=GetDC(Button1.Handle); 
  Bitmap.Canvas.Handle:=ButHandle; 
  Bitmap.Canvas.StretchDraw(Rec, Bitmap2); 
end;

 
comment نظرات ()