PDA

View Full Version : چگونه از ورود داده با فاصله جلوگیری شود؟



Mohammad S
شنبه 30 خرداد 1383, 12:18 عصر
با سلام خدمت دوستان عزیز
من از SQL Server 2000 Personal استفاده می کنم.( اینو گفتم که نوع دیتابیس مشخص باشه :wink: )
موقع ورود داده ها اگر کاربر کلمات "کاشی" و " کاشی" را وارد کند (توجه کنید: دومی دارای فاصله ای در اول کلمه است) یا کلمات "متر مربع" و "متر مربع" را وارد کند (فاصله بین دو کلمه) به عنوان دو رکورد جدا ثبت می شود ولی همه ما می دانیم که این دو یکی است. آیا راهی وجود دارد که بتوان از خطای کاربر جلوگیری کرد یا هنگام نمایش بتوان این دو را یکی در نظر گرفت؟ :?: یا باید طریق بی خیالی طی کنیم؟! :wink:

مهدی کرامتی
شنبه 30 خرداد 1383, 12:56 عصر
میتوانید قبل از پست کردن کاراکترهای موردنظر را از رشته ورودی حذف کنید.

Mahdi_S_T
شنبه 30 خرداد 1383, 17:29 عصر
یا می توانی هنگام ورود اجازه ورود کارکتر خالی را ندهی

Mohammad S
یک شنبه 31 خرداد 1383, 00:37 صبح
میتوانید قبل از پست کردن کاراکترهای موردنظر را از رشته ورودی حذف کنید.
به این راحتی ها هم که می فرمایید نیست. برای فاصله اول: نسبتا راحت، برای فاصله بین به نظرم باید تا انتهای فایل هرجا دو فاصله یا بیشتر وجود داشت پاک کنم و برای فاصله در آخر کلمه هم که نسبتا راحت است (از آخر هر چه فاصله بود حذف کنم).
روشی که به ذهنم رسید. نظر بهتری وجود دارد؟ :shock:

JavanSoft
یک شنبه 31 خرداد 1383, 09:49 صبح
تابع Trimدر Delphi این کار را انجام می دهد ..اما باید موارد فارسی در نظر بگیرید

Mohammad S
یک شنبه 31 خرداد 1383, 13:46 عصر
تابع Trimدر Delphi این کار را انجام می دهد ..اما باید موارد فارسی در نظر بگیری
با تشکر از شما واقعا عالی بود:flower:
ولی منظورتان از فارسی را نفهمیدم. اونو که امتحان کردم برای فارسی هم مشکلی نداشت. هم متن های فارسی هم فارسی - انگلیسی
تنها مشکلش این است که فاصله های اضافی بین کلمات را نمی تواند حذف کند که برای آن هم احتمالا خودم تابع می نویسم.
به هر حال ممنون
:gift:

Mohammad S
یک شنبه 31 خرداد 1383, 18:32 عصر
با دستور Trim خود دلفی پروسیجری نوشتم که فاصله های اضافی بین کلمات در یک جمله، ابتدای جمله و انتهای جمله را حذف می کند که برای آن دسته از دوستانی که شاید لازم داشته باشند اینجا قرار می دهم.
موفق باشید. 8)

procedure MyTrim(S: WideString; Var Trim_Text: WideString);
var S_Trim:WideString;
i:Integer;
begin
S_Trim:=Trim(S);
i:=1;
while i<Length(S_Trim) do
begin
if ((S_Trim[i]=' ')and(S_Trim[i+1]=' ')) then
Delete(S_Trim,i,1)
else
i:=i+1;
end;
Trim_Text:=S_Trim;
end;

نحوه استفاده:

procedure TForm1.Button1Click(Sender: TObject);
var Trim_Text:WideString;
begin
MyTrim(' Test this procedure ',Trim_Text);
Edit1.Text:=Trim_Text;
end;

فقط در استفاده از نوع WideString شک داشتم که نمی دانستم باید از String استفاده شود یا WideString که اگر دوستان عزیز مرا یاری کنند خوشحال خواهم شد. :flower:

radan63
جمعه 19 مهر 1387, 23:34 عصر
if ((S_Trim[i]=' ')and(S_Trim[i+1]=' ')) then
من با این قسمت مشکل پیدا کردم چون انگار اصلا به کاراکتر های آرایه دسترسی ندارد؟