كيف احذف كلمات من سلسلة نصية
#1
السلام عليكم

أستفسر عن عكس هذه الدالة يعني else
PHP كود :
s:=http.sl.GetText;
delete(s ,1 ,pos('<font>',s)+length('<font>')-1);
delete(s, pos('</font>',s) ,length(s) );
Memo1.Lines.Add(s); 
كيف أعمل عكسها يعني اذا لم يجد هذا في النتيجة راح يظهر لي Not Founded
في Memo1
جربت if...then ...else لم تنجح ربما أخطأت في التعبير
كما جربت try ... except و لم تنجح أيضا
الرد
#2
افحص قيمة المتحول s اذا كانت لاتجلب اي شيء
الرد
#3
ممكن توضح أكثر
الرد
#4
وعليكم السلام
بوجد عدة أمثله في المنتدى ابحث فقط
كود :
s := http.sl.GetText; s := copy(s, pos('<font>', s) + 6, pos('</font>', s) - 7); if s <> '' then Memo1.Lines.Add(s) else Memo1.Lines.Add('Not Founded');
الرد
#5
شكرا لك هذه تصلح مع copy أنا حبيت مع Delete
PHP كود :
delete(s ,1 ,pos('<font>',s)+length('<font>')-1);
delete(s, pos('</font>',s) ,length(s) ); 
لأن الcopy يخرج لي باقي الصفحة
الرد
#6
هكدا افضل
بالتوفيق
كود :
var p1, p2: Integer; s: string; begin s := '<font>delphi</font>'; p1 := Pos('<font>', s) + Length('<font>'); p2 := Pos('</font>', s); s := Copy(s, p1, p2 - p1); if s <> '' then Memo1.Lines.Add(s) else Memo1.Lines.Add('Not Founded'); end;
الرد
#7
شكرا لك نجرب و نرد
الرد
#8
استخدم pos او ansipos مثلا
if pos(.....) <>0 then
found
else
not found
او استخدم StringReplace
الرد
#9
السلام عليكم
onexite
كما نعلم الدالة Pos ترجع قيمة رقمية
في هده الحالة
if Pos('work', s) <> 0 then
ادا ارجعت Pos قيمة أكبر من 0
هدا يعني ان الشرط تحقق ونص موجود
يمكن استعمالها أولا للتحقق
اخونا يريد نسخ كلمات من سلسلة نصية
أما StringReplace في حالته لن يستعملها
يكفي استعمال Copy Pos
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم