PDA

View Full Version : مبتدی: code کردن اطلاعات و decode کردن برای نمایش در dbgrid بااستفاده از تابع دلفی



sdhamed
دوشنبه 18 اسفند 1393, 07:52 صبح
سلام خسته نباشید
من برای کد کردن اطلاعات و ذخیره در اس کیو ال یک تابع نوشتم برای ثبت مشکلی ندارم ولی زمانی که از دستور select استفاده میکنم برای نمایش در dbgrid نمیدونم چجوری از تابع دلفی برای decode کردن استفاده کنم.
1- میشه از تابع دلفی در دستورات اس کیو ال استفاده کرد
2- اگر نمیشه این تابع را با چه روشی برای استفاده در دستورات اس کیو ال سازگارش کنم یا مشابهش را با فرمت اس کیو ال هم بنویسم

لطفا در صورت دادن پاسخ مثال یادتون نره:تشویق:

با تشکر

یوسف زالی
دوشنبه 18 اسفند 1393, 09:50 صبح
سلام.
1- نخیر مگر این که DLL استاندارد Publish کنید و در اس کیو ال رجیستر کنید.
2- برای فیلد مورد نظر در سمت دلفی در رویداد OnGetText دی کد بنویسید.
نیازی به مثال نیست، رویداد رو باز کنید دستتون میاد.

Mahmood_M
دوشنبه 18 اسفند 1393, 15:42 عصر
اگر مراحل Decode کردن اطلاعات در حد تغییرات رشته ایه ، می تونید در Data-Base یک Function برای Decode تعریف کنید و در SELECT از تابع تعریف شده برای ساخت مقدار فیلد مورد نظرتون استفاده کنید

sdhamed
سه شنبه 19 اسفند 1393, 07:52 صبح
با تشکر از پاسخ شما:تشویق:
2- برای فیلد مورد نظر در سمت دلفی در رویداد OnGetText دی کد بنویسید.


OnGetText مربوط به رویداد کدوم شی در دلفی هستش؟
میشه راهنمایی کنید نیاز به یه مثال یا توضیح بیشتر هست

یوسف زالی
سه شنبه 19 اسفند 1393, 10:05 صبح
برای تشکر از کسی کافیه دکمه مربوطه رو زیر پستش بزنید.

رویداد OnGetText برای فیلد هاست.
شما دو تا روش داری، یا فیلد هات رو در زمان ساخت به دیتاست اضافه می کنی، یا این که این کار رو نمی کنی.
1- در زمان ساخت اد شده است: روی فیلد مورد نظر کلیک کنید و رویداد هاش رو ببینید
2- در زمان ساخت اد نشده است: برای فیلد مورد نظر باید دستی رویداد بنویسید.

مثال روش دو:


private
procedure MyFieldGetText(Sender: TField; var Text: String; DisplayText: Boolean);
.
.


ADODataSet.FieldByName('MyField').OnGetText := MyFieldGetText;
.
.

procedure TForm1.MyFieldGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
Text := Decrypt(Sender.Value)
end;

benyaminrahimi
سه شنبه 19 اسفند 1393, 14:45 عصر
روش های بالا خیلی خوبن ولی ممکنه کند باشند ... اگر میتونید کامپوننت عوض کنید باید عرض کنم سری unidac کامپوننتی تحت عنوان uniencript داره که با الگوریتم های روز دنیا و یک password دیتا رو اینکریپت میکنه و یا دیکریپت

نتیجه این اعمال به دیتا ست تحویل داده میشه و لازم نیست کدی بنویسید یعنی این کامپوننت دیتا رو اینکریپت میکنه و در دییتا بیس میریزه و موقع لود هم روی گرید یا کنترل های از این دست دیکریپت شده تحویل میده