Board index » delphi » Code example TIdFTP and List

Code example TIdFTP and List

I count the spaces and extract the names or sizes from there, here's an
example:

ListLines = new TStringList;

try{FTPC->List( ListLines," ",true);}
            catch ( EIdException& exc)
            {
               // do nothing
               ListPresent = false;
            }
        if (ListPresent==true)
        {
            for (int i = 0; i < ListLines->Count; i++)
            {
                TempString1=ListLines->Strings[i].SubString(0,2);
                int Space_Index=0;
                int Space_Index1=0;
                int Space_Index2=0;

if((TempString1.AnsiCompare("dr")==0)||(TempString1.AnsiCompare("d-")==0))
                { // DIRECTORY
                  TempString2=ListLines->Strings[i];
                  for (int k = 1; k <= TempString2.Length(); k++)
                  {
                    TempString3=ListLines->Strings[i].SubString(k,1);
                    if(TempString3.AnsiCompare(" ")==0)
                        Space_Index=k;
                  }
                  TempString2.Delete(1,Space_Index);
                                                  // belov removes
directories with only '.' and '..' as entry
                  if
!( (TempString2.AnsiCompare(".")==0)||(TempString2.AnsiCompare("..")==0) ))
                  {
                      TempString2 // 'name'

                  }
                }

               else if(TempString1.AnsiCompare("-r")==0)
                {  // FILES
                    prev_ch_space=false;
                    this_ch_space=false;
                    int count1=0;

                    TempString2=ListLines->Strings[i];

                    // Count spaces
                    for (int k = 1; k <= TempString2.Length(); k++)
                    {
                        TempString3=ListLines->Strings[i].SubString(k,1);
                        if(TempString3.AnsiCompare(" ")==0)
                        {
                            this_ch_space=true;
                        }
                        else this_ch_space=false;

                        if(this_ch_space&&!prev_ch_space)
                        count1=count1+1;
                        prev_ch_space=this_ch_space;
                    }

                    if(count1==7)
                    {   // -r--r--r--   1 daemon       761 Oct 12  1999
.login_message
                        // RESET Count
                        prev_ch_space=false;
                        this_ch_space=false;
                        count1=0;

                        for (int k = 1; k <= TempString2.Length(); k++)
                        {

TempString3=ListLines->Strings[i].SubString(k,1);
                            if(TempString3.AnsiCompare(" ")==0)
                            {
                                this_ch_space=true;

                                Space_Index2=k;
                            }
                            else this_ch_space=false;

                            if(this_ch_space&&!prev_ch_space)
                            count1=count1+1;
                            if(count1==2)
                            Space_Index=k;
                            if(count1==3)
                            Space_Index1=k;

                            prev_ch_space=this_ch_space;
                        }
                    }
                    else
                    {    // count1==8 spaces or bigger
                        // -rw-r--r--   1 webadmin eaweb         245 May 19
1998 README
                        // RESET Count
                        prev_ch_space=false;
                        this_ch_space=false;
                        count1=0;

                        for (int k = 1; k <= TempString2.Length(); k++)
                        {

TempString3=ListLines->Strings[i].SubString(k,1);
                            if(TempString3.AnsiCompare(" ")==0)
                            {
                                this_ch_space=true;

                                Space_Index2=k;
                            }
                            else this_ch_space=false;

                            if(this_ch_space&&!prev_ch_space)
                            count1=count1+1;
                            if(count1==3)
                            Space_Index=k;
                            if(count1==4)
                            Space_Index1=k;

                            prev_ch_space=this_ch_space;
                        }
                    }
                    TempString2.Delete(1,Space_Index);

TempString2.Delete(Space_Index1-Space_Index+2,Space_Index2-Space_Index1-2);

                    TempString2 // 'filesize' 'name'

It counts the transitions character to space ('  ') and modifies the string.

Its the best I could come up with at this point in time.
Modify it to suit your needs.....

Espen B Hansen

 

Re:Code example TIdFTP and List


Same code as previous post , just made it a bit more readable..(darn TABS..)

Its confusing enough with this_ch_space & prev_ch_space, but
works fine.

Espen

Quote
"Espen" <espen_berger.han...@chello.no> wrote in message

news:90m8fj$hv22@bornews.inprise.com...
Quote

> I count the spaces and extract the names or sizes from there, here's an
> example:

> ListLines = new TStringList;

> try{FTPC->List( ListLines," ",true);}
>             catch ( EIdException& exc)
>             {
>                // do nothing
>                ListPresent = false;
>             }
>         if (ListPresent==true)
>         {
>             for (int i = 0; i < ListLines->Count; i++)
>             {
>                 TempString1=ListLines->Strings[i].SubString(0,2);
>                 int Space_Index=0;
>                 int Space_Index1=0;
>                 int Space_Index2=0;

if((TempString1.AnsiCompare("dr")==0)||(TempString1.AnsiCompare("d-")==0))
Quote
>                 { // DIRECTORY
>                   TempString2=ListLines->Strings[i];
>                   for (int k = 1; k <= TempString2.Length(); k++)
>                   {
>                     TempString3=ListLines->Strings[i].SubString(k,1);
>                     if(TempString3.AnsiCompare(" ")==0)
>                         Space_Index=k;
>                   }
>                   TempString2.Delete(1,Space_Index);
>                                                   // below removes

directories with only '.' and '..' as entry
Quote
>                   if

( (TempString2.AnsiCompare(".")==0)||(TempString2.AnsiCompare("..")==0) ))

- Show quoted text -

Quote
>                   {
>                       TempString2 // 'name'

>                   }
>                 }

>                else if(TempString1.AnsiCompare("-r")==0)
>                 {  // FILES
>                     prev_ch_space=false;
>                     this_ch_space=false;
>                     int count1=0;

>                     TempString2=ListLines->Strings[i];

>                     // Count spaces
>                     for (int k = 1; k <= TempString2.Length(); k++)
>                     {
>                         TempString3=ListLines->Strings[i].SubString(k,1);
>                         if(TempString3.AnsiCompare(" ")==0)
>                         {
>                             this_ch_space=true;
>                         }
>                         else this_ch_space=false;

>                         if(this_ch_space&&!prev_ch_space)
>                         count1=count1+1;
>                         prev_ch_space=this_ch_space;
>                     }

>                     if(count1==7)
>                     {   // -r--r--r--   1 daemon       761 Oct 12  1999
.login_message
>                         // RESET Count
>                         prev_ch_space=false;
>                         this_ch_space=false;
>                         count1=0;

>                         for (int k = 1; k <= TempString2.Length(); k++)
>                         {

TempString3=ListLines->Strings[i].SubString(k,1);

- Show quoted text -

Quote
>                             if(TempString3.AnsiCompare(" ")==0)
>                             {
>                                 this_ch_space=true;

>                                 Space_Index2=k;
>                             }
>                             else this_ch_space=false;

>                             if(this_ch_space&&!prev_ch_space)
>                             count1=count1+1;
>                             if(count1==2)
>                             Space_Index=k;
>                             if(count1==3)
>                             Space_Index1=k;

>                             prev_ch_space=this_ch_space;
>                         }
>                     }
>                     else
>                     {    // count1==8 spaces or bigger
>                         // -rw-r--r--   1 webadmin eaweb         245 May
19 1998 README
>                         // RESET Count
>                         prev_ch_space=false;
>                         this_ch_space=false;
>                         count1=0;

>                         for (int k = 1; k <= TempString2.Length(); k++)
>                         {

TempString3=ListLines->Strings[i].SubString(k,1);

- Show quoted text -

Quote
>                             if(TempString3.AnsiCompare(" ")==0)
>                             {
>                                 this_ch_space=true;

>                                 Space_Index2=k;
>                             }
>                             else this_ch_space=false;

>                             if(this_ch_space&&!prev_ch_space)
>                             count1=count1+1;
>                             if(count1==3)
>                             Space_Index=k;
>                             if(count1==4)
>                             Space_Index1=k;

>                             prev_ch_space=this_ch_space;
>                         }
>                     }
>                     TempString2.Delete(1,Space_Index);

TempString2.Delete(Space_Index1-Space_Index+2,Space_Index2-Space_Index1-2);

- Show quoted text -

Quote

>                     TempString2 // 'filesize' 'name'

> It counts the transitions character to space ('  ') and modifies the
string.

> Its the best I could come up with at this point in time.
> Modify it to suit your needs.....

> Espen B Hansen

Other Threads