Код из другой темы...

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Tip.the.besT, 18 Apr 2011.

  1. Tip.the.besT

    Tip.the.besT Member

    Joined:
    24 Jun 2009
    Messages:
    267
    Likes Received:
    10
    Reputations:
    4
    for i:=0 to form1.memo1.Lines.Count-1 do begin
    s:= form1.memo1.Lines;
    delete(s, 1, pos(':', s));

    count-1 - это видимо до пустой строки продолжать цикл да?

    что означает 1, это, что мол с первого знака после ":" удаляем?

    И насчёт pos(':', s) ??????

    Везде просто приводят пример кода, а не расписывают, что да как. Даже в БиблииДелфи просто пример кода, нихера не понятно.
     
  2. AlexTheC0d3r

    AlexTheC0d3r Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    388
    Likes Received:
    179
    Reputations:
    18



    нумерация массива начинается с 0 (подобие Си), соответственно число count будет больше на единицу, и в итоге программа выйдет за границы массива, поэтому -1
     
  3. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    276
    Reputations:
    2
    delete(откуда_удаляем, номер_символа_с_которого_начинаем_удаление, сколько_символов_удалять)

    pos(что_ищем, где_ищем) возвращает порядковый НОМЕР первого найденного символа в этой строке.

    s:=вася-лох
    delete(s, 1, pos('-',s)); // удаляем с первого по '-'.

    s будет равно "лох"

    если:

    s:=вася-лох
    delete(s, pos('-',s), legth(s)); // тут мы начинаем удаление с символа '-' и чтобы удалилось точно всё до конца строки - юзаем общую длинну строки (length(s)) как величину заведомо большую, чем нам нужно. можно вместо ленгт написать 10000 - нечего страшного не будет

    s будет равно "вася"
     
  4. Tip.the.besT

    Tip.the.besT Member

    Joined:
    24 Jun 2009
    Messages:
    267
    Likes Received:
    10
    Reputations:
    4
    Спасибо, хоть в этом разобрался, а то так заумно учебники учят, что въехать просто нереально для новичка в кодинге.