شرح هذا الكود لو سمحتم
#1
السلام عليكم ورحمة الله وبركاته

ممكن شرح الكود التالي :


PHP كود :
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  
Socket: TCustomWinSocket);
var   
s,str,name,nei_rong:string;
      
i,n:integer;
      
all_name,ni_cheng:string;
      
newitem:TListItem;
begin
   s
:=Socket.ReceiveText;  //½ÓÊÕ×Ö·û´®
   
n:=pos('@',s);
   if 
n>0 then
   begin
      str
:=copy(s,1,n-1);
      if 
str='½»Ì¸' then  //¸ñʽ:"½»Ì¸"@"toêdzÆ"@"ÄÚÈÝ"
      
begin
         str
:=copy(s,n+1,length(s)-n);
         
name:=copy(str,3,pos('@',str)-3);  //½»Ì¸µÄ¶ÔÏóêdzÆ
         
nei_rong:=copy(str,pos('@',str)+1,length(str)-pos('@',str));//½»Ì¸µÄÄÚÈÝ
         
for i:=0 to ListView1.Items.count-1 do  //¸ù¾Ý·¢ÑÔÕßIPÕÒ·¢ÑÔÕßêdzÆ
         
begin
           
if  socket.RemoteAddress=ListView1.Items[i].subitems[0] then
             begin
             ni_cheng
:= ListView1.Items[i].caption;
             
RichEdit1.Lines.add(ni_cheng+'¶Ô'+name+'˵'+nei_rong);              end;
         
end;

         for 
i:=0 to ListView1.Items.count-1 do //¸ù¾Ý½»Ì¸µÄ¶ÔÏóêdzÆÕÒ½»Ì¸µÄ¶ÔÏóIP
         
begin
           
if  name=ListView1.Items[i].caption then
             name
:=ListView1.Items[i].subitems[0]; //subitems[0]´æ·ÅIP
         
end;

         for 
i:=0 to ListView1.Items.count-1 do  //ʵÏÖ˽ÁÄ
            
begin
             
if ServerSocket1.Socket.Connections[i].RemoteAddress=name then
              ServerSocket1
.Socket.Connections[i].SendText('½»Ì¸@'+ni_cheng+'@'+nei_rong);
            
end;
       
end;
      if 
str='êdzÆ' then  //êdzÆ@xmj
      
begin
        all_name
:='';
        
newitem:=ListView1.Items.insert(ListView1.Items.count);

        
newitem.caption:=copy(s,pos('@',s)+1,length(s)-pos('@',s));
        
newitem.SubItems.Add(socket.RemoteAddress);
        
newitem.SubItems.Add(socket.RemoteHost);
        
RichEdit1.Lines.add(newitem.caption+'½øÀ´ÁË');
        for 
i:=0 to ListView1.Items.count-1 do
        
all_name:=all_name+ListView1.Items[i].Caption +'^'+ListView1.Items[i].subitems[0]+'@';
        for 
i:=0 to ListView1.Items.count-1 do  //¹ã²¥Ð½øÈëÓû§
        
begin
         ServerSocket1
.Socket.Connections[i].SendText('Ìí¼ÓÓû§@'+all_name);
        
end;
      
end;
   
end;
end;


procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  
Socket: TCustomWinSocket);      //Óû§À뿪´¥·¢
var i:integer;ni_cheng:string;
begin
        
for i:=0 to ListView1.Items.count-1 do  //¸ù¾Ý·¢ÑÔÕßIPÕÒ·¢ÑÔÕßêdzÆ
         
begin
           
if  socket.RemoteAddress=ListView1.Items[i].subitems[0] then
             begin
             ni_cheng
:= ListView1.Items[i].caption;
             
RichEdit1.Lines.add(ni_cheng+'À뿪ÁË');
             
end;
         
end;
       for 
i:=0 to ListView1.items.count-1 do  //ListView1ÖвéÕÒÀ뿪Óû§
         
begin
         
if  Socket.RemoteAddress= ListView1.Items[i].subitems[0] then
            Listview1
.Items.Item[i].Delete();
         
end;
      for 
i:=0 to ListView1.items.count-1 do    //¹ã²¥À뿪Óû§
         
ServerSocket1.Socket.Connections[i].SendText('À뿪@'+ListView1.Items[i].caption); 

شكراً لكم

اللهمّ إنّي ظلمت نفسي ظلماً كثيراً ولا يغفر الذّنوب إلا أنت

فاغفر لي مغفرة من عندك وارحمني إنّك أنت الغفور الرّحيم
الرد
#2

وعليكم السلام ورحمة الله
شرك كود يتطلب وقت، اطرح السؤال عن شيئ محدد او حدد السطر الذي لم تفهمه.
الرد
#3
كود :
n:=pos('@',s); if n>0 then begin str:=copy(s,1,n-1); if str='½»Ì¸' then //¸ñʽ:"½»Ì¸"@"toêdzÆ"@"ÄÚÈÝ" begin str:=copy(s,n+1,length(s)-n); name:=copy(str,3,pos('@',str)-3); //½»Ì¸µÄ¶ÔÏóêÇ³Æ nei_rong:=copy(str,pos('@',str)+1,length(str)-pos('@',str));//

هذا الشرح اخي لو سمحت

اللهمّ إنّي ظلمت نفسي ظلماً كثيراً ولا يغفر الذّنوب إلا أنت

فاغفر لي مغفرة من عندك وارحمني إنّك أنت الغفور الرّحيم
الرد
#4
السلام عليكم يمكنك مراجعة http://www.delphi4arab.net/forum/showthr...p?tid=1834 مفيد ان شاء الله
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#5
شرح الكود علاه سطرا سطرا
ضع بالمتغير n موضع الحرف '@'
اذا كان n يختلف عن الصفر قم بما يلي
انسخ من المتغير النصي s انطلاقا من البداية الى n ناقص واحد حرف وضعه بالمتغير str (نسخ بداية النص الى موضع @)
اذا كان str (النص المنسوخ سابق) يساوي '½»Ì¸' قم بالتالي
انسخ ما تبقى من النص s وضعه بالمتغير str (نسخ مابعد @ من حروف)
انسخ من str انطلاقا من الحرف الثالث حتى موضع @ ناقص ثلاث وضع النتيجة بالمتغير name
انسخ من str انطلاقا من موضع @ الى النهاية وضع النتيجة بالمتغير nei_rong
الرد
#6
إقتباس : //¸ñê½:"½»ì¸"@"toêç³æ"@"äúèý"
ولكن ما هذا النص!!
الرد
#7
cargem كتب :ولكن ما هذا النص!!

مجرد تعليق بلغة اجنبية ممكن روسية او صينية :d
الرد
#8
إقتباس :ولكن ما هذا النص!!
رموز خاصة بhtml
راجع

كود :
http://www.w3schools.com/tags/ref_entities.asp
الرد


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


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