ورود

View Full Version : سوال: کاراکتر خالی در دلفی



mtfa65
دوشنبه 15 مهر 1392, 13:24 عصر
سلام
من درلفی نیاز دارم که در یک edit کاراکتر خالی وارد نشود باید از چه کدی استفاده کنم؟
من دستور را در یک دکمه به این صورت نوشتم:
if edit1.text='' then begin
showmessage('کاراکتر خالی مجاز نیست');
edit1.text:='0';
end;

اما در این کد اگر دو تا کاراکتر خالی باشه عمل نمی کنه.
با تشکر

*ویرایش شد

Mask
دوشنبه 15 مهر 1392, 13:38 عصر
سلام
1-کدهاتون رو در تگ Code قرار بدید.
2- سعی کنید سوال رو کامل و واضح بپرسید.
آیا منظورتون از خالی کلید اسپیس هست؟
آیا در زمان کلیک میخواهید وضعیت edit رو بررسی کنید یا در حالت تایپ یا change شدن ادیت؟

یوسف زالی
دوشنبه 15 مهر 1392, 13:51 عصر
با اجازه:


if Trim(Edit1.Text) = '' then

mi5coder
دوشنبه 15 مهر 1392, 19:28 عصر
سلام
برای منظور شما ده ها راه وجود داره !
ولی در ساده ترین شکلها از تابع pos استفاده کن که برای جستجوی یک مقتدار رشته ای داخل یک متن است

mtfa65
سه شنبه 16 مهر 1392, 13:29 عصر
سلام
بله منظر من کاراکتر خالی است و این دستور رو در یک BUTTON نوشتم
اگر صدتا هم دکمه SPACE زده بشه اما یه کاراکتر وارد نشه این مورد رو شناسایی کنه.
با تشکر

یوسف زالی
سه شنبه 16 مهر 1392, 14:05 عصر
راهی که گفتم رو تست کردید؟
Trim رو؟

Ananas
سه شنبه 16 مهر 1392, 16:01 عصر
Pascal

procedure TForm1.Button1Click(Sender: TObject);
var
s : string;
i : Integer;
b : Boolean;
begin
s := Edit1.Text;
b := False;
for i := 1 to Length(s) do
begin
if (s[i] <> ' ') then
begin
b := True;
break;
end;
end;
if (not b) then
ShowMessage('متن خالی');
end;


C++

void __fastcall TForm1::Button1Click(TObject *Sender)
{
UnicodeString s = Edit1->Text;
bool b = false;
for (int i = 1; i <= s.Length(); i++)
{
if (s[i] != L' ')
{
b = true;
break;
};
};
if (!b)
ShowMessage(L"متن خالی");
}

Delphi 2010
پنج شنبه 18 مهر 1392, 15:35 عصر
این کد حتما بهت جواب میده
خودم تست کردم حتی کلمه ای رو کپی کردم و تو ادیت paste کردم بازم عمل کرد


procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.Text <> StringReplace(Edit1.Text,' ','',[rfReplaceAll]) then
begin
Edit1.Text := StringReplace(Edit1.Text,' ','',[rfReplaceAll]);
Edit1.SelStart := Edit1.GetTextLen;
ShowMessage('کاراکتر خالی مجاز نیست');
end;
end;

اگه دوستان هم برای اصلاح کد نظری داشتن لطفا بنویسید

Delphi 2010
پنج شنبه 18 مهر 1392, 15:43 عصر
با اجازه:


if Trim(Edit1.Text) = '' then


البته راه قبلی من که گفتم منطقی نیست.
هر کدی را برای کاری ساختن

کد آقا You-See درسته ولی یه مشکل کوچولو داره که بعد از Trim کردن میپره اول کارکتر و با دستور زیر مشکل حل میشه

Edit1.SelStart := Edit1.GetTextLen;

البته ببخشید جسارت کردم عزیز

حالا اینم کد منطقی تر برای دوستمون که سوال پرسیدن



procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.Text <> Trim(Edit1.Text) then
begin
Edit1.Text := Trim(Edit1.Text);
Edit1.SelStart := Edit1.GetTextLen;
ShowMessage('کارکتر خالی مجاز نیست');
end;
end;

mtfa65
یک شنبه 26 آبان 1392, 17:44 عصر
البته راه قبلی من که گفتم منطقی نیست.
هر کدی را برای کاری ساختن

کد آقا You-See درسته ولی یه مشکل کوچولو داره که بعد از Trim کردن میپره اول کارکتر و با دستور زیر مشکل حل میشه

Edit1.SelStart := Edit1.GetTextLen;

البته ببخشید جسارت کردم عزیز

حالا اینم کد منطقی تر برای دوستمون که سوال پرسیدن



procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.Text <> Trim(Edit1.Text) then
begin
Edit1.Text := Trim(Edit1.Text);
Edit1.SelStart := Edit1.GetTextLen;
ShowMessage('کارکتر خالی مجاز نیست');
end;
end;

سلام
از همه شما ممنونم. اما مشکلم با trim رفع شد.اما روشی که Delphi 2010 (http://barnamenevis.org/member.php?184542-Delphi-2010) فرمودند نامبر وان هست.بسیار بسیار جالب هست.
با تشکر

mtfa65
یک شنبه 26 آبان 1392, 17:47 عصر
سلام
از همه شما ممنونم. اما مشکلم با trim رفع شد.اما روشی که Delphi 2010 (http://barnamenevis.org/member.php?184542-Delphi-2010) فرمودند نامبر وان هست.بسیار بسیار جالب هست.
با تشکر

اما دوست عزیز Delphi 2010 روش شما فقط کاراکتر خالی رو قبول نمیکنه.اما من منظورم این نبود منظورم این بود که اگر ادیت کاملا خالی باشه قبول نکنه.
به هر حال مشکل رفع شد.