درصورتی که از دیتابیس فاکس پرو در داس استفاده کنید برای استفاده از ان در ویندوز کاراکتر ها به هم ریخته و ناخوانا میشوند .توابع زیر در دلفی این مشکل را حل میکنند
ادامه مطلب ...
کامپوننت Ttable روی فرم بندازین
خصوصیت Tabletype رو روی ttFoxPro قرار بدین
خصوصیت Table name نام فایل dbf به همراه مسیرش رو بدین
Active رو True کنید .
با استفاده از کد زیر شما می توانید یک رشته را با دو الگوریتم SAH1 , MD5 که به طور همزمان استفاده میشوند Hash نمایید همچنین با تغییر در برنامه قادر خواهید بود فایل را نیز hash کنید تنها کافی است به جای HashStringAsHex از دستور HashStreamAsHex استفاده کنید .
uses idhash,idhashsha, IdHashMessageDigest
procedure hash(Code:string):string;
var idmd5: TIdHashMessageDigest5;
sthash: TIdHashSHA1;
str:string;
begin
idmd5 := TIdHashMessageDigest5.Create;
sthash := TIdHashSHA1.Create;
try
str := idmd5.HashStringAsHex(Code);
result:=sthash.HashStringAsHex(str);
finally
idmd5.Free;
sthash.Free;
end;
end;
با اجرای کد زیر امکان مشاهده فیلدهای جدول مورد نظر در اواراکل را دارید . کد ساده ولی کاربردی امیدوارم به دردتون بخوره . البته تو ایران هنوز زیاد از اوراکل استفاده نمیشه !
create FUNCTION dbo.Num_ToWords (
@Number Numeric (38, 0) -- Input number with as many as 18 digits
) RETURNS VARCHAR(8000)
AS BEGIN
DECLARE @inputNumber VARCHAR(38)
DECLARE @NumbersTable TABLE (number int, word VARCHAR(10))
DECLARE @outputString VARCHAR(8000)
DECLARE @length INT
DECLARE @counter INT
DECLARE @loops INT
DECLARE @position INT
DECLARE @chunk CHAR(3)
DECLARE @tensones CHAR(2)
DECLARE @hundreds CHAR(1)
DECLARE @tens CHAR(1)
DECLARE @ones CHAR(1)
DECLARE @And nvarchar(3)
DECLARE @Neg nvarchar(10)
IF @Number = 0 return 'صفر'
IF Left(@Number ,1) <> '-'
SET @Neg = ' '
ELSE
BEGIN
SET @Neg = 'منفی '
SET @Number = @Number * -1
END
SELECT @inputNumber = CONVERT(varchar(38), @Number)
, @outputString = ''
, @counter = 1
SELECT @length = LEN(@inputNumber)
, @position = LEN(@inputNumber) - 2
, @loops = LEN(@inputNumber)/3
IF LEN(@inputNumber) % 3 <> 0 SET @loops = @loops + 1
INSERT INTO @NumbersTable SELECT 0, ''
UNION ALL SELECT 1, ' یک ' UNION ALL SELECT 2, ' دو '
UNION ALL SELECT 3, ' سه ' UNION ALL SELECT 4, ' چهار '
UNION ALL SELECT 5, ' پنج ' UNION ALL SELECT 6, ' شش '
UNION ALL SELECT 7, ' هفت ' UNION ALL SELECT 8, ' هشت '
UNION ALL SELECT 9, ' نه ' UNION ALL SELECT 10, ' ده '
UNION ALL SELECT 11, ' یازده ' UNION ALL SELECT 12, ' دوازده '
UNION ALL SELECT 13, ' سیزده ' UNION ALL SELECT 14, ' چهارده '
UNION ALL SELECT 15, ' پانزده ' UNION ALL SELECT 16, ' شانزده '
UNION ALL SELECT 17, ' هفده ' UNION ALL SELECT 18, ' هیجده '
UNION ALL SELECT 19, ' نوزده ' UNION ALL SELECT 20, ' بیست '
UNION ALL SELECT 30, ' سی ' UNION ALL SELECT 40, ' چهل '
UNION ALL SELECT 50, ' پنجاه ' UNION ALL SELECT 60, ' شصت '
UNION ALL SELECT 70, ' هفتاد ' UNION ALL SELECT 80, ' هشتاد '
UNION ALL SELECT 90, ' نود ' UNION ALL SELECT 100, ' صد '
UNION ALL SELECT 200, ' دویست ' UNION ALL SELECT 300, ' سیصد '
UNION ALL SELECT 400, ' چهارصد ' UNION ALL SELECT 500, ' پانصد '
UNION ALL SELECT 600, ' ششصد ' UNION ALL SELECT 700, ' هفتصد '
UNION ALL SELECT 800, ' هشتصد ' UNION ALL SELECT 900, ' نهصد '
WHILE @counter <= @loops BEGIN
SET @chunk = RIGHT('000' + SUBSTRING(@inputNumber, @position, 3), 3)
IF @chunk <> '000' BEGIN
SELECT @tensones = SUBSTRING(@chunk, 2, 2)
, @hundreds = SUBSTRING(@chunk, 1, 1)
, @tens = SUBSTRING(@chunk, 2, 1)
, @ones = SUBSTRING(@chunk, 3, 1)
IF CONVERT(INT, @tensones) <= 20 OR @Ones='0' BEGIN
if len(@outputString)>0
begin
set @And='و '
end
else
begin
set @And=''
end
SET @outputString = (SELECT word
FROM @NumbersTable
WHERE @hundreds+'00' = number)
+ case @hundreds when '0' then '' else
case @tensones when '00' then '' else 'و' end end+
(
SELECT word
FROM @NumbersTable
WHERE @tensones = number)
+ CASE @counter WHEN 1 THEN '' -- No name
WHEN 2 THEN ' هزار ' WHEN 3 THEN ' میلیون '
WHEN 4 THEN ' میلیارد ' WHEN 5 THEN ' بیلیون '
WHEN 6 THEN ' بیلیارد ' WHEN 7 THEN ' کوانتیلیون '
WHEN 8 THEN ' سکستیلیون ' WHEN 9 THEN ' سپتیلیون '
WHEN 10 THEN ' اکتیلیون ' WHEN 11 THEN ' نونیلیون '
WHEN 12 THEN ' دسیلیون ' WHEN 13 THEN ' اندسیلیون '
ELSE '' END
+ @And + @outputString
END
ELSE BEGIN
if len(@outputString)>0
begin
set @And='و '
end
else
begin
set @And=''
end
SET @outputString = ' '
+ (SELECT word
FROM @NumbersTable
WHERE @hundreds+'00' = number)
+ case @hundreds when '0' then '' else 'و' end
+ (SELECT word
FROM @NumbersTable
WHERE @tens+'0' = number)
+ 'و'
+ (SELECT word
FROM @NumbersTable
WHERE @ones = number)
+ CASE @counter WHEN 1 THEN '' -- No name
WHEN 2 THEN ' هزار ' WHEN 3 THEN ' میلیون '
WHEN 4 THEN ' میلیارد ' WHEN 5 THEN ' بیلیون '
WHEN 6 THEN ' بیلیارد ' WHEN 7 THEN ' کوانتیلیون '
WHEN 8 THEN ' سکستیلیون ' WHEN 9 THEN ' سپتیلیون '
WHEN 10 THEN ' اکتیلیون ' WHEN 11 THEN ' نونیلیون '
WHEN 12 THEN ' دسیلیون ' WHEN 13 THEN ' اندسیلیون '
ELSE '' END
+ @And + @outputString
END
END
SELECT @counter = @counter + 1
, @position = @position - 3
END
SET @outputString = LTRIM(RTRIM(REPLACE(@outputString, ' ', ' ')))
SET @outputstring = UPPER(LEFT(@outputstring, 1)) + SUBSTRING(@outputstring, 2, 8000)
SET @outputstring = @Neg + @outputstring
RETURN @outputString
END
GO
GRANT EXEC on dbo.Num_ToWords TO PUBLIC
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
تابع date_to_words با سه پارامتر ورودی که سال و ماه و روز را به صورت رشته ای دریافت و یک رشته برمیگرداند . خود کد واضح و نیاز به توضیح نداره . نظر یادتون نشه .
create FUNCTION date_to_words (@year_ as varchar(4),@mon_ as varchar(2),@day_ as varchar(2) ) RETURNS
VARCHAR(100)
as
BEGIN
/*
declare @year_ as varchar(4)
declare @mon_ as varchar(2)
declare @day_ as varchar(2)
set @year_='1390'
set @mon_='01'
set @day_='02'*/
/* Converts date into words */
DECLARE @yr INT
DECLARE @dateval INT
DECLARE @thousand INT
DECLARE @hundred INT
DECLARE @tens INT
DECLARE @mon INT
DECLARE @tensword VARCHAR(10)
DECLARE @onesword VARCHAR(10)
DECLARE @thousandsword VARCHAR(20)
DECLARE @hundredsword VARCHAR(20)
DECLARE @datevalsword VARCHAR(20)
DECLARE @MonWord VARCHAR(20)
SET @yr=cast(@year_ as int)
SET @dateval=cast(@day_ as int)
Set @mon=cast(@mon_ as int)
/* Mon TO WORDS */
SELECT @MonWord =CASE @Mon
WHEN 1 THEN ' فروردین ماه '
WHEN 2 THEN ' اردیبهشت ماه '
WHEN 3 THEN ' خرداد ماه '
WHEN 4 THEN ' تیر ماه '
WHEN 5 THEN ' مرداد ماه '
WHEN 6 THEN ' شهریور ماه '
WHEN 7 THEN ' مهر ماه '
WHEN 8 THEN ' ابان ماه '
WHEN 9 THEN ' اذر ماه '
WHEN 10 THEN ' دی ماه '
WHEN 11 THEN ' بهمن ماه '
WHEN 12 THEN ' اسفند ماه '
END
/* DAY TO WORDS */
SELECT @datevalsword =CASE @dateval
WHEN 1 THEN 'اول'
WHEN 2 THEN 'دوم '
WHEN 3 THEN 'سوم '
WHEN 4 THEN 'چهارم '
WHEN 5 THEN 'پنجم '
WHEN 6 THEN 'ششم '
WHEN 7 THEN 'هفتم '
WHEN 8 THEN 'هشتم '
WHEN 9 THEN 'نهم '
WHEN 10 THEN 'دهم '
WHEN 11 THEN 'یازدهم '
WHEN 12 THEN 'دوازدهم '
WHEN 13 THEN 'سیزدهم '
WHEN 14 THEN 'چهاردهم '
WHEN 15 THEN 'پانزدهم '
WHEN 16 THEN 'شانزدهم '
WHEN 17 THEN 'هفدهم '
WHEN 18 THEN 'هجدهم '
WHEN 19 THEN 'نوزدهم '
WHEN 20 THEN 'بیستم '
WHEN 21 THEN ' بیست و یکم '
WHEN 22 THEN ' بیست و دوم '
WHEN 23 THEN 'بیست و سوم'
WHEN 24 THEN 'بیست و چهارم '
WHEN 25 THEN 'بیست و پنجم '
WHEN 26 THEN 'بیست و ششم '
WHEN 27 THEN 'بیست و هفتم '
WHEN 28 THEN 'بیست و هشتم '
WHEN 29 THEN 'بیست و نهم '
WHEN 30 THEN 'سیم '
WHEN 31 THEN 'سی و یکم '
END
/* YEAR TO WORDS */
set @thousand=floor(@yr/1000)
set @yr = @yr - @thousand * 1000
set @hundred = floor(@yr / 100)
set @yr = @yr - @hundred * 100
IF (@yr > 19)
begin
set @tens = floor(@yr / 10)
set @yr = @yr % 10
end
ELSE
set @tens=0
SELECT @thousandsword=CASE @thousand
WHEN 1 THEN ' یک هزار '
WHEN 2 THEN 'دو هزار'
WHEN 3 THEN 'سه هزار'
WHEN 4 THEN 'چهار هزار'
WHEN 5 THEN 'پنج هزار'
WHEN 6 THEN 'شش هزار'
WHEN 7 THEN 'هفت هزار'
WHEN 8 THEN 'هشت هزار'
WHEN 9 THEN 'نه هزار'
else ''
END
SELECT @hundredsword=CASE @hundred
WHEN 0 then ''
WHEN 1 THEN 'یک صد'
WHEN 2 THEN 'دویست '
WHEN 3 THEN 'سیصد '
WHEN 4 THEN 'چهارصد '
WHEN 5 THEN 'پانصد '
WHEN 6 THEN 'ششصد '
WHEN 7 THEN 'هفتصد '
WHEN 8 THEN 'هشتصد '
WHEN 9 THEN 'نهصد '
else ''
END
if (@hundred<>'')
set @hundredsword=' و '+@hundredsword
/*@tens To WORDS*/
SELECT @tensword=CASE @tens
WHEN 2 THEN 'بیست '
WHEN 3 THEN 'سی '
WHEN 4 THEN 'چهل '
WHEN 5 THEN 'پنجاه '
WHEN 6 THEN 'شصت '
WHEN 7 THEN 'هفتاد '
WHEN 8 THEN 'هشتاد '
WHEN 9 THEN 'نود '
ELSE ''
END
if (@tens<>'')
set @tensword=' و '+@tensword
/*ONES To WORDS*/
SELECT @onesword=CASE @yr
WHEN 0 THEN ''
WHEN 1 THEN 'یک '
WHEN 2 THEN 'دو '
WHEN 3 THEN 'سه '
WHEN 4 THEN 'چهار '
WHEN 5 THEN 'پنج '
WHEN 6 THEN 'شش '
WHEN 7 THEN 'هفت '
WHEN 8 THEN 'هشت '
WHEN 9 THEN 'نه '
WHEN 10 THEN 'ده '
WHEN 11 THEN 'یازده '
WHEN 12 THEN 'دوازده '
WHEN 13 THEN 'سیزده '
WHEN 14 THEN 'چهارده '
WHEN 15 THEN 'پانزده '
WHEN 16 THEN 'شانزده '
WHEN 17 THEN 'هفده '
WHEN 18 THEN 'هجده '
WHEN 19 THEN 'نوزده '
END
if (@yr<>'')
set @onesword=' و '+@onesword
return (@datevalsword+@monWord+@thousandsword+@hundredsword+ @tensword+' '+@onesword)
END
عکسهایی که برای BillBoard نیاز دارید باید با نام Bbrd آغاز گردند .
حال در سربرگ Installation Designer ، از زیر شاخه Behavior And Logic ، گزینه Support Files را انتخاب کنید.در فریم وسط، گزینه Language Independent ، از زیر شاخه Support Files را انتخاب کنید! (گزینه اول)
در این قسمت تصویر مورد نیاز برای پس زمینه، موسیقی و کلیپ تصویری خود را وارد کنید.
دوباره در فریم وسط، گزینه Language Independent ، از زیر شاخه BillBoards
را انتخاب کنید! و تصاویری که میخواهید در حین نصب نمایش داده شوند را وارد
کنید! (دقت کنید که فایلها باید با Bbrd شروع شوند!)
اگر هم می خواهید تصویری به عنوان سرآغاز نمایش داده شود، در قسمت Splash Screen آن را وارد کنید!
حال بر روی InstallScript از زیر شاخه Behavior And Logic کلیک کرده تا وارد محیط کد نویسی شوید!
گذاشتن Background برای پروژه
برای اینکار ابتدا باید عکس خود را معرفی یا اعلان کنید! یعنی بعد از
(#include “ifx.h”) کد زیر را تایپ کنید: (شما باید کلماتی را که با حروف
بزرگ (Cap) نوشته شده اند، با حروف بزرگ بنویسید!)
#include "ifx.h"
#define BMP_PATH SUPPORTDIR ^ "Wallpaper.bmp"
#define BMP_ID 1
حال در تابع OnFirstUIBefore() کدهای زیر را اضافه کنید
function OnFirstUIBefore()
number Result1,nResult, nLevel, nSize, nSetupType;
string szTitle, szMsg, szOpt1, szOpt2, szLicenseFile;
string szName, szCompany, szTargetPath, szDir, szFeatures, szTargetdir,szTest;
BOOL bLicenseAccepted;
string svNumValue,svName,Svcustomer,SvServerSystemName;
number nvUser,nvType,nvSize;
begin
Enable (BACKGROUND);
SetColor(BACKGROUND,BLACK);
SetDisplayEffect (EFF_VERTSTRIPE);
PlaceBitmap( BMP_PATH , 1 , CENTERED , CENTERED , CENTERED );
Delay(5);
حالا کلیدهای Ctrl+F5 را بزنید و منتظر مشاهده نتیجه باشید!
(کدها بسیار واضع هستند و نیازی به توضیح نیست!)
برای اطلاعات بیشتر، Ctrl+I را زده و در پنجره ظاهر شده از قسمت Function
Category گزینه User Interface را انتخاب و در فریم سمت راست، گزینه
PlaceBitmap را انتخاب کنید!
تغییر یافتن اتوماتیک تصاویر در حین نصب
این مرحله نیاز به کدنویسی ندارد! کافیست شما تصاویر خود را در قسمت
SupportFiles بخش Billboards وارد کنید! دقت کنید که نام فایلها با Bbrd
شروع شوند!
قرار دادن موسیقی در حین نصب
شما ابتدا باید موسیقی خود را اعلان کنید! یعنی طبق مرحله قبل بعد از Include “ifx.h” کد زیر را وارد کنید!
#include "ifx.h"
#define Music SUPPORTDIR ^ "Music.wav"
#define Title1 "this is sample"
حال در تابع OnFirstUIBefore() کدهای زیر را اضافه کنید! (برای داشتن پس زمینه، نیازی به حذف کدهای مرحله قبل نیست و کدهای زیر را بعد از آنها وارد کنید.)
SetTitle (title1,26,WHITE)
if (PlayMMedia (MMEDIA_WAVE),Music,MMEDIA_PLAYASYNCH | MediaGetData,0)<0)
then
MessageBox("unable play music",WARNING)
نکته اضافی
SetTitle
فقط یک متن را روی صفحه نمایش میدهد که این متن در بالا اعلان شده است و تأثیری در پخش موسیقی ندارد
//فرض اینکه همه ورودیها قبلا تعریف شده
//زبان انگلیسی من افتزاح باشه پس گیر به لغتاش ندین
//این فقط شبه کد
procedure mankind
var time,Mankind
begin
read(mankind)
//تشخیص برنامه نویس
if mankind.IQ<=100 then
exit;
if (mankind.fashion <> Null) and (mankind.magnate) then
exit;
if mankind.NumberLanguagesTaught<3 then
exit;
if mankind.Puffyeyes<>null then
exit;
if mankind.StaminaBody <80% then
exit;
if mankind.Abilityengage<99 then
exit;
//engage manzor hamon gir dadan khodemon
if (mankind.DynamicMind=Null) and (mankind.PowerAnalysis =Null) and (mankind.GoodDesign=Null) then
exit;
if (mankind.SpendingMoreTimeComputers<99%) then
exit;
write('Programmer if possible')
for i=1 to 7 do begin
if mankind.Update=99% then
Breack;
//زندگی یک روز برنامه نویس
for i :=1 to 24 do
begin
time:=now;
if time = 7 then
write('System will turn ')
if time = 8 then
write('System will restart because of the High volume of information ')\\jomle bandio hal kardin
if time = 9 then
write('Open the fridge')
if time = 10 then
write('wowwww Full load Windows ')\\ejmaan salavat
if time = 11 then
write(' Browsing in the internet')
if time = 12 then
write(' begin design program')
if time = 13 then
write(' Say prayer and have dinner')
if time = 14 then
write(' Begin Programming ')
if time = 15 then
write(' Compile the programm and Save')
if time = 15:10 then
write(' show 365 errors ')
if time = 16 then
write(' take a nap')
if time = 17 then
write(' debug programmer ')
if time = 18 then
write(' debug programmer ')
if time = 19 then
write(' Compile again ')
if time = 19:05 then
write(' show 364 errors ')
if time = 20 then
write(' Trace Program ')
if time = 21 then
write(' compile Program and debug ')
if time = 22 then
write(' show 1 errors ')
if time = 23 then
write(' Jumping fuse ')
if time = 24 then
write('try to recovery ')
if time = 01 then
write('Drinking water and relaxation ')
if time = 02 then
write('Compile again and show 1 error and trace')
if time = 03 then
write('Excite programmer because find problem -->The problem is ;')
if time = 04 then
write('no problem Syntactic but 2 problem in Logical ')
if time = 05 then
write('no problem Syntactic but 2 problem in Logical ')
if time = 06 then
write('Customer Delivery but Customer demands are quite different and Do not get any money ')
end;//end for
if mankind.energy<0.00012 then
breck;
end;
end;
سلام دوستان
مثلا قرار بود دات نت شروع کنم وسط کار دوباره درگیر یک پروژه دلفی شدم . راستش خودم هم دلفی رو بیشتر دوست دارم . فعلا یک نرم افزار برای مرتب کردن کتابهاتون گذاشتم که امیدوارم مورد استفاده قرار بگیرد.
امکاناتی که داره :
درج ، ویرایش ، حذف ، کاربرد اسان ، رنگ بندی رکوردها ، جستجو سریع و راحت کتابها
البته فعلا نسخه ازمایشی
برای افزودن Check Box تنها کافی کد زیر در تگ column در grid قرار دهید . همان طور که مشاهده میکنید از TemplateField استفاده شده است .
<asp:GridView ID="GridView1" runat="server"> < <
چند وقتی شروع کردم دارم یک پروژه با Asp و کد C# مینویسم . بعد از دو سال شروع مجدد و کار با این زبان دیدم همه چیز یادم شده . نکته هایی که لازم دارم برای شروع کار وقتی جواب گرفتم اینجا میذارم شاید روزی به کار دوستان بیاد .
در اینجا میخوام نحوه رنگ کردن بعضی از رکوردا رو براتون بگم که مطمئنا با تغییرات جزئی میتونید کارای بیشتری انجام بدین . همین طور که میبینید این کد در داخب رویداد RowDataBound نوشته شده است . در جای name field شما نام فیلد بولین خودتون بنویسید .
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)if (e.Row.RowType == DataControlRowType.DataRow)bool isnew = (bool)DataBinder.Eval(e.Row.DataItem, "name field");// if (isnew) e.Row.Style.Add("color", "#000999"); } }
لطفا با نظرات خودتون در پیشرفت این وبلاگ کمک کنید .
موفق باشید
{
{
یک کد جالب که با توجه به نیازتون اگر تغییرات لازم بدین کاربرد جالبی میتونه داشته باشه
procedure TForm1.FormCreate(Sender: TObject);
var
FullRgn, ClientRgn, ButtonRgn: THandle;
Margin, X, Y: Integer;
begin
Margin := (Width - ClientWidth) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height) ;
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn
(X, Y, X + ClientWidth, Y + ClientHeight) ;
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF) ;
X := X + Button1.Left;
Y := Y + Button1.Top;
ButtonRgn := CreateRectRgn
(X, Y, X + Button1.Width, Y + Button1.Height) ;
CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR) ;
SetWindowRgn(Handle, FullRgn, True) ;
end;
یکسری از این دستورات قبلا هم گذاشتم ولی دقیقا نمیدونم کدوم کدا رو گذاشتم . اینا رو توی یک وبلاگ دیدم یک جورایی کپی برداری ولی چون صفحه رو ذخیره کرده بودم ادرس وبلاگ نتونستم پیدا کنم
ممکن روزی به درد بخورن
ادامه مطلب ...تقریبا همه این بازی جالب انجام دادن کد این بازی با زبان اسمبلی امیدوارم لذت ببرید . البته یک اعتراف کنم من این برنامه رو خودم اجرا نکردم البته امیدوارم خطا نداشته باشه .
ادامه مطلب ...