منزل
Top.Mail.Ru Yandeks.Metrika
المنتدى: "Main";
الأرشيف الحالي: 2004.12.12;
تنزيل: [xml.tar.bz2];

إلى

تحقق من وجود نوع البحث عن فروع مماثلة


Bobby Digital ©   (2004-11-24 05:02) [0]

هل من الممكن التحقق بطريقة أو بأخرى من نوع بيانات بيانات الإدخال ، على سبيل المثال في تحرير دون استخدام try ... exept



YurikGL ©   (2004-11-24 07:10) [1]

TryStrToBool ()
TryStrToFloat ()
TryStrToInt ()



ASoft   (2004-11-24 07:37) [2]

> بوبي الرقمية
إذا كنت بحاجة إلى إدخال أرقام أو أرقام فقط من الفاصلة في "تحرير" ، في KeyPress Edit "يمكنك تعيين التحقق من الإدخال على الفور من لوحة المفاتيح :)



Reindeer Moss Eater ©   (2004-11-24 10:28) [3]

لا يمكن التحقق من نوع البيانات المدخلة في التعديل.
هذا هو دائما سلسلة ancy.



Rutven ©   (2004-11-24 10:37) [4]


> لا يمكن التحقق من نوع البيانات التي تم إدخالها.
> هذا هو دائما سلسلة ancy.

برافو. :)



Sandman25 ©   (2004-11-24 10:44) [5]

إذا اتبعت مقاربة صارمة ، فستكون البيانات المدخلة من النوع PChar.



ASoft   (2004-11-24 10:47) [6]

> لا يمكن التحقق من نوع البيانات التي تم إدخالها.
أنا شخصياً حاولت التحقق مرة واحدة عند الخروج. حرر ذلك هناك: رقم أو نص ، استخدم f. فال (). ولكن بعد ذلك ، ببساطة في KeyPress لم تسمح بإدخال الحروف أو الأرقام (حسب الاحتياجات). ربما صاحب السؤال يعني ذلك؟



ASoft   (2004-11-24 10:49) [7]

> ربما يقصد مؤلف السؤال؟ [6]
بالمناسبة ، أين هو ، المؤلف؟



passlight ©   (2004-11-24 10:49) [8]

وإذا نسخ / لصق؟ هل يعمل الشيك في هذه الحالة؟



ASoft   (2004-11-24 10:53) [9]

> وإذا نسخ / لصق؟ هل ستنجح عملية التحقق في هذه الحالة؟ [8]
سؤال جيد ...



ASoft   (2004-11-24 11:07) [10]

مرة أخرى فال () ...
مفاتيح الاعتراض Shift-Ins ، Ctrl-C ...
تعليق على تعديل الإطار المنبثق ...
بطريقة ما لا جدا ...
من هو الافضل



begin...end ©   (2004-11-24 14:20) [11]


> [10] ASoft (24.11.04 11: 07)


> اعتراض المفاتيح Shift-Ins ، Ctrl-C ...

> بطريقة ما ليست ...
> من هو الأفضل؟

TEdit.OnChange معالج.



Ega23 ©   (2004-11-24 14:28) [12]

الأفضل في معالج OnButtonOKClick:


procedure TFProfs.btnOkClick(Sender: TObject);
var
ss:String;
ProfID:Integer;

begin

if not CheckControlValues then Exit;

NewDataString:=MakeHistDetStr(nil,eProfNam.Text+";"+eProfLab.Text+";"+
                              RQ1.FieldByName("WCfgNam").AsString+";"+cbIsActual.Text,
                              "Название: ;Сокр.: ;АРМ: ;Используется: ","V");

............

ModalResult:=True;
end;

function TFProfs.CheckControlValues: Boolean;
var
ss:string;
Code:Integer;

begin

ss:=eProfNam.Text;
if not CheckOnQuotes(ss,Code) then
 begin
  if eProfNam.CanFocus then eProfNam.SetFocus;
//   PassMessage(Handle,"Символ "+eProfNam.Text[Code]+" является зарезервированым "+CRLF+
//                      " и не может быть использован",PasMess.capWarning,0);
  Exit;
 end;
eProfNam.Text:=ss;

ss:=eProfLab.Text;
if not CheckOnQuotes(ss,Code) then
 begin
  if eProfLab.CanFocus then eProfLab.SetFocus;
//   PassMessage(Handle,"Символ "+eProfLab.Text[Code]+" является зарезервированым "+CRLF+
//                      " и не может быть использован",PasMess.capWarning,0);
  Exit;
 end;
eProfLab.Text:=ss;

if eProfNam.Text="" then
 begin
  PassMessage(Handle,PasMess.wrnNamAbs,PasMess.capWarning,0);
  eProfNam.SetFocus;
  Result:=False;
  Exit;
 end;

if eProfLab.Text="" then
 begin
  PassMessage(Handle,PasMess.wrnLabAbs,PasMess.capWarning,0);
  eProfLab.SetFocus;
  Result:=False;
  Exit;
 end;

if Mode=0 then
 begin
  ss:="select ProfNam from Profs where ProfNam=" + ValX(eProfNam.Text);
  QuOpen(DMpas.RQTemp,ss);
  if not DMpas.RQTemp.IsEmpty then
   begin
    DMpas.RQTemp.Close;
    PassMessage(Handle,PasMess.wrnNamExist,PasMess.capWarning,0);
    eProfNam.SetFocus;
    Result:=False;
    Exit;
   end;

  ss:="select ProfLab from profs where proflab=" + ValX(eProfLab.Text);
  QuOpen(DMpas.RQTemp,ss);
  if not DMpas.RQTemp.IsEmpty then
   begin
    DMpas.RQTemp.Close;
    PassMessage(Handle,PasMess.wrnLabExist,PasMess.capWarning,0);
    eProfLab.SetFocus;
    Result:=False;
    Exit;
   end;
 end;

Result:=True;
end;




Bobby Digital ©   (2004-11-24 23:58) [13]

كنت بحاجة إلى التمييز - عدد صحيح تعويم سلسلة
لقد كتبت وظيفة بسيطة ... تتحقق من كل حرف في سلسلة ، على سبيل المثال ، إذا كانت جميع الأرقام هي عدد صحيح .. وهكذا.



Юрий Зотов ©   (2004-11-25 00:20) [14]

نوع
TDataType = (dtInteger، dtFloat، dtString)؛

دالة GetDataType (S: string): TDataType؛
فار
أنا: عدد صحيح
F: مزدوج المطلق I ؛
بدأ
إذا TryStrToInt (S ، I) ثم
النتيجة: = dtInteger
آخر
إذا TryStrToFloat (S ، F) ثم
النتيجة: = dtFloat
آخر
النتيجة: = dtString
الغاية؛



GuAV ©   (2004-11-25 01:25) [15]

يوري زوتوف © (25.11.04 0: 20) [14]

لا تظن ذلك

يوري زوتوف © (25.11.04 0: 20) [14]
F: مزدوج المطلق I ؛


- رمز غير صحيح ، مع مراعاة أن Yshausch (Shteupuk) = 4 ، و SizeOf (Double) = 8. يمكنك بالطبع إثبات أنك لا تحل محل أي شيء ، لكن سيكون الأمر أكثر صحة I: integer absoulte F؛ والأكثر IMHO الصحيح هو عدم حفظ كلمة واحدة على المكدس ويعلن F وأنا بشكل منفصل.



GuAV ©   (2004-11-25 01:25) [16]

GuAV © (25.11.04 1: 25) [15]
YSHYAUSCHA (Shteupuk) = 4

SizeOf (عدد صحيح) = 4



GuAV ©   (2004-11-25 01:36) [17]

لقد حاولت. GetDataType ("7,8") ؛ - AV. بارد.



Bobby Digital ©   (2004-11-25 01:52) [18]

وما هو التوقيع. F: مزدوج المطلق I ؛



GuAV ©   (2004-11-25 01:58) [19]

Bobby Digital © (25.11.04 1: 52) [18]
وما هو التوقيع. F: مزدوج المطلق I ؛


حقيقة أن المتغير F ، النوع المزدوج ، يقع على نفس عنوان المتغير I. في هذه الحالة ، يكون هذا البناء خاطئًا ، لأن حجم المتغير F أكبر من حجم المتغير I وبالتالي يمكن قراءة / كتابة المتغير F إلى قراءة / كتابة البيانات الخارجية.

يجب أن لا تستخدم مطلق دون الحاجة.

هنا يمكنك الكتابة
var
I: integer;
F: double;


أكثر مطلقة + F1



ASoft   (2004-11-25 07:04) [20]

GetDataType () رائع حقًا ، والذي يثبت مرة أخرى: "إنشاء أنواع خاصة بك". ولكن ماذا عن التحقق عند الخروج من MaskEdit ، لأن الحدث (خطأ) يتم تشغيل EDBEditError في وقت أبكر من وظيفة التحقق؟ اكتب معالج الأخطاء الخاص بك؟



Leonid Troyanovsky   (2004-11-25 09:56) [21]


> ASoft (25.11.04 07: 04) [20]
> GetDataType () رائع حقًا ، مما يثبت مرة أخرى:
> "إنشاء أنواع خاصة بك". ولكن ماذا عن التحقق من الخروج؟
> من MaskEdit ، لأنه يتم تشغيل الحدث (خطأ) EDBEditError
> في وقت سابق من وظيفة الاختبار؟ اكتب معالجك
> الاخطاء؟


مثلا

http://groups.google.com/groups?selm=41931491%40f1003.n5080.z2.fidonet.ftn

--
التحيات ، LVT.



ASoft   (2004-11-25 10:56) [22]

>> ليونيد ترويانوفسكي [21]
شكرا للمعلومات ، في الواقع ، افترضت:
"على E: EDBEditError القيام به
قم برفع Exception.Create ("استثناءي") ؛ // افعل شيئًا "-
اعتراضه الاستثناء.



Юрий Зотов ©   (2004-11-25 14:42) [23]

> GuAV © (25.11.04 01: 25) [15]

> ألا تعتقد ذلك

يبدو لي أن المترجم سيظل يخصص 8 بايت ، وليس 4.

> يمكنك بالتأكيد إثبات أنك لا تحل محل أي شيء ، ولكن
> لا يزال من الأصح أن أكون أنا: integer absoulte F.

إذا كانت العبارة الأولى صحيحة ، فإن الثانية خاطئة.

> و IMHO هو الأصح في عدم حفظ كلمة واحدة على المكدس و
> أعلن F وأنا بشكل منفصل.

ما هو أكثر صحة؟



jack128 ©   (2004-11-25 14:48) [24]

يوري زوتوف © (25.11.04 14: 42) [23]
ما هو أكثر صحة؟

من هذا على ما يبدو

> GuAV © (25.11.04 1: 36) [17] [رد]
> حاولت. GetDataType ("7,8") ؛ - AV. بارد.

؛-)



GuAV ©   (2004-11-25 14:50) [25]

يوري زوتوف © (25.11.04 14: 42) [23]
إذا كانت العبارة الأولى صحيحة ، فإن الثانية خاطئة.


راجعت بالفعل. [17] - AV.

سيقوم المحول البرمجي بالتأكيد بتخصيص 4 بايت. البيان الأول صحيح.

اعتقدت أن العبارة الثانية صحيحة ، بناءً على حقيقة قيامك بفحص الكود قبل نشره. سيقوم المحول البرمجي بتخصيص 4 بايت لكن وحدات بايت 4 المفقودة لن تحتوي على البيانات المستخدمة. نعم ، كنت مخطئا البيان الثاني غير صحيح.



GuAV ©   (2004-11-25 14:55) [26]

يوري زوتوف © (25.11.04 14: 42) [23]
ما هو أكثر صحة؟


والحقيقة هي أنه إذا كان هناك فائدة بسيطة من المطلق (وحدات البايت 4 في المكدس من الذاكرة أو سرعة 0 أو 0 تقريبًا) فمن السهل جدًا ارتكاب خطأ. ما أظهرته

أيضًا حقيقة أن الكود يصبح أقل وضوحًا ، كما هو موضح في [18].



Юрий Зотов ©   (2004-11-25 15:37) [27]

> GuAV © (25.11.04 14: 55) [26]

1. أوافق على أنني اعتقدت بشكل سيء أن أفكاري حول المترجم كانت خاطئة ، وأنني يجب أن أكتب I المطلقة F.

2. لا أوافق على أن كود DATA من هذا يصبح ضعيف القراءة (في الحالات الأكثر تعقيدًا - نعم ، ربما لم أكن أساء استخدام القاعدة هناك أيضًا ، لكن هذه الحالة بسيطة للغاية ومطلقة "لكنها شفافة". "رابط إلى" وما هو مطلق "أنا لا أفكر في الحجة ، لأنها لا تثبت الخلط بين الشفرة ، وإنما هي جهل أولي للغة. وبنفس النجاح ، يمكننا أن نقول أن المؤشرات تخلط بين الشفرة أيضًا ، لأنه لا يفهم الجميع ما هي.

3. في عمليات التكرار العميقة (ولا يمكنك أبدًا معرفة أين وكيف سيتم استخدام الإجراء الخاص بك) ، يمكن أن تكون بايت 1 الخاصة بالمكدس مهمة. لذلك ، إذا كانت هناك فرصة لحفظ شيء ما دون الإضرار بالباقي ، فإن الأمر يستحق القيام به.



Юрий Зотов ©   (2004-11-25 15:38) [28]

تم الحذف بواسطة المشرف
ملاحظة: أخذ



Sha ©   (2004-11-25 16:11) [29]

> Bobby Digital © (24.11.04 05: 02)

لا تنسى ذلك
يعتبر TryStrToInt $ 1 و 0x1 بمثابة أعداد صحيحة
تعتبر TryStrToFloat 1E-10 عائمة



GuAV ©   (2004-11-25 16:13) [30]

يوري زوتوف © (25.11.04 15: 38) [28]
لا أوافق على أن الكود المعطى من هذا يصبح ضعيف القراءة.

حسنا ، أنا لا أتفق ، يصبح ضعيف القراءة.

يوري زوتوف © (25.11.04 15: 37) [27]
3. في عمليات التكرار العميقة (ولا يمكنك أبدًا معرفة أين وكيف سيتم استخدام الإجراء الخاص بك) ، يمكن أن تكون بايت 1 الخاصة بالمكدس مهمة.


1 بايت مكدس - كيف يتم ذلك؟ :-)

يوري زوتوف © (25.11.04 15: 37) [27]
لذلك ، إذا كانت هناك فرصة لحفظ شيء ما دون الإضرار بالباقي ، فإن الأمر يستحق القيام به.


ومع ذلك ، فإن فرصة ارتكاب خطأ هي أيضًا "موطن البقية". هنا ، بالطبع ، بسبب الشفافية المطلقة للرمز ، من السهل اكتشافه.

ملاحظة: شخصيا ، أفضل هذا الرمز:
var
 DummyParam: record
   case TDataType of
     dtInteger: (I: Integer);
     dtFloat:   (F: Double);
 end;



Sha ©   (2004-11-25 16:21) [31]

من المنطقي أيضًا إضافة const إلى وصف المعلمة:
function GetDataType(const S: string): TDataType;



jack128 ©   (2004-11-25 17:34) [32]

Sha © (25.11.04 16: 21) [31]
لا يوجد إذا فقط لسهولة القراءة.



Sha ©   (2004-11-25 18:03) [33]

jack128 © (25.11.04 17: 34) [32]
من المنطقي أيضًا أن ننظر إلى نافذة التصحيح :)



GuAV ©   (2004-11-25 18:09) [34]

jack128 © (25.11.04 17: 34) [32]

procedure ValueStringParameter(S: string);
begin
 ShowMessageFmt("ValueStringParameter. ref count = %D",
   [PInteger((Integer(S)-8))^]);
end;

procedure ConstantStringParameter(const S: string);
begin
 ShowMessageFmt("ConstantStringParameter. ref count = %D",
   [PInteger((Integer(S)-8))^]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var S: string;
begin
 S := StringOfChar("-", 5);
 ShowMessageFmt("Caller. ref count = %D",
   [PInteger((Integer(S)-8))^]);
 ValueStringParameter(S);
 ConstantStringParameter(S);
end;



jack128 ©   (2004-11-25 18:49) [35]

أنا أعلم ، ولكن هذا أمر خطير ، أنت تفهم. إذا كان يجب نسخ الخط ، ثم نعم .. وهكذا .. على الرغم من أننا إذا قاتلنا من أجل كل بايت من المكدس ، فقد يكون من المنطقي ؛-)



jack128 ©   (2004-11-25 18:50) [36]

jack128 © (25.11.04 18: 49) [35]
أنا أعلم ، لكن هذا ليس خطيرًا ، كما فهمت.



Sha ©   (2004-11-25 19:17) [37]

jack128 © (25.11.04 18: 50) [36]
انتبه إلى مقدمة / خاتمة الإجراء.
С CONST اتضح أقصر بكثير وأسرع.



TankMan ©   (2004-11-25 19:39) [38]

مدائن ... :)
مطلق "ولكن من المفيد إجراء مثل هذه المناقشات هنا ... كم عدد prozhek الصغيرة على passcal التي تمت إعادة كتابتها ، ولكني لم أسمع عن المطلق ...

ZY
أغتنم هذه الفرصة وأود أن أقول شكرا لك على الكتاب الموصى به حول إنشاء مكونات في دلفي. هذا هو بالضبط الكتاب الذي فاتني. (خارج الموضوع ، حسنا ، في أي مكان آخر يمكنني أن أشكر الشخص :))



Германн ©   (2004-11-26 04:11) [39]

تستخدم بصراحة في كثير من الأحيان مطلق في السياق:
فار
St: سلسلة ؛
LenSt: بايت المطلقة سانت.


ولكن بعد ذلك كان الأمر يتعلق بسلاسل باسكال وعند تشكيل هذه السلاسل ، كان أكثر ملاءمة لكتابة LenSt: = N من St [0]: = Chr (N) أو كان أكثر ملاءمة لكتابة N: = LenSt من N: = Ord (St [0] )؛

ولكن خوارزمية نوع آخر مطلق ما زلت أستخدمه ولا أنوي التخلي عنه. هذا هو السجل البديل. إنه أمر حيوي بالنسبة لي ، لأنني حصلت على إجابة من بعض الحديد. وهذه الإجابة تعتمد على ما هو مطلوب.



GuAV ©   (2004-11-26 14:29) [40]

هيرمان © (26.11.04 4: 11) [39]
لكن ما زلت أستخدم خوارزمية نوع مطلقة أخرى حتى الآن ولن أتخلى عنها. هذا هو السجل البديل.


لا يزال IMHO أفضل من المطلق. في هذه الحالة ، وأود أن يكون لهم - سم [30].



صفحات: 1 2 فرع كامل

المنتدى: "Main";
الأرشيف الحالي: 2004.12.12;
تنزيل: [xml.tar.bz2];

الطابق العلوي





الذاكرة: 0.71 ميغابايت
الوقت: 0.078 ج
4-1098876608
VZup
2004-10-27 15:30
2004.12.12
OpenDialog - الذي واجه ؟؟


14-1100766445
بن
2004-11-18 11:27
2004.12.12
الاستطلاع. جغرافيا أعضاء المنتدى.


1-1101899571
أرتيم ك.
2004-12-01 14:12
2004.12.12
كيفية تعيين ألوان الخط لشارتا بشكل عشوائي ، حتى لا تتكرر؟


1-1101804989
Serzh_Evdokimov
2004-11-30 11:56
2004.12.12
حدد المجلد برمجياً في ShellTreeView ..


3-1100507408
مصطلح
2004-11-15 11:30
2004.12.12
سؤال يتعلق باستخدام الإجراءات المخزنة





الأفريكانية الألبانية العربية الأرمينية الأذرية الباسكي البيلاروسية البلغارية الكاتالونية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية الدانماركية الهولندية الانجليزي الإستونية الفلبينية الفنلندية الفرنسية
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية العبرية الهندية الهنغارية الإيسلندية الأندونيسية الأيرلندية الإيطالية اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايوية المالطية النرويجية
الفارسية البولنديّة البرتغاليّة الرومانية الروسية الصربية السلوفاكيّة سلوفيني الإسبانية السواحلية السويدية التايلاندية التركية الأوكرانية الأردية الفيتنامية الويلزية اليديشية البنغالية البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский