[Delphi] памогите с функцией

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by cel, 7 Apr 2010.

  1. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    Вот функция:

    PHP:
    function TForm1.Parsing(text:String): string;
    var
    i:integer;
    SkTStringList;
     
    NewMsg,name:string;
     New:
    TStringList;
    begin
    sk
    := TStringList.Create;
    sk.Text:=text;
         For 
    := 0 To sk.Count -do
         
    begin
           
    If Pos('id="homelink"'sk[I]) <> 0 Then
           begin
              id 
    := sk[I];
              
    id := Copy(idPos('href="'id), Length(id));
              
    Delete(idPos('">'id),Length(id));
              
    id := Copy(idPos('id'id), Length(id));
              
    Delete(id1,2);
           
    end;
         
    end;

         For 
    := 0 To sk.Count -do
         
    begin
           
    If Pos('<div class="shah">'sk[I]) <> 0 Then
           begin
              name 
    := sk[I];
              
    name := Copy(namePos('">'name), Length(name));
              
    delete(name,Pos('<'name), Length(name));
              
    delete(name12);
           
    end;
         
    end;

         For 
    := 0 To sk.Count -do
         
    begin
           
    If Pos('<a href="/mail.php?id='sk[I]) <> 0 Then
           begin
              mesage 
    := sk[I];
              
    mesage := Copy(mesagePos('<a href="/mail.php?id='mesage), 100);
              if 
    Pos('</b>'mesage) <>0 then
              begin
              delete
    (mesagePos('</b>'mesage),Length(mesage));
              
    delete(mesagePos('<a href='mesage),pos('(<b>',mesage));
              
    delete(mesage1,3);
              
    end
              
    else
              
    mesage:='нет';
           
    end;
         
    end;

     if 
    strtoint(id) <>0 then
     begin
    label3
    .Caption:='У вас '+mesage+' новых сообщений.';
    Label1.Caption:='Здраствуйте '+name;
    Label2.Caption:='Ваш ИД: '+id;
    NewMsg:=name+', у вас '+mesage+' новых сообщений';
    memo1.lines.add(NewMsg);
    end
    else
    begin
    NewMsg
    :='Вы не авторизованы!';
    memo1.lines.add(NewMsg);
    new.
    Free;
    sk.Free;
    end;
    Она выдаёт ошибку когда её вызываеш опять другой кнопкой

    HTML:
    projekt   raised exception class EAccess Violation with message:" Access violation at address 00000020.Read of address  00000020",Progres stopped ...
    
    И ещё вапрос,как сделать чтоб приложение ело меньше опиротивы??
     
  2. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Ну по конкретному приложению помочь немогу... а вообще - поменьше использовать "повторялки" одного и того-же кода...
     
  3. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    У меня нет "повторялок" кода)
     
  4. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    не инициализирована new
    добавь строчку new := TStringList.Create;
    Code:
    function TForm1.Parsing(text:String): string; 
    var 
    ...
    begin 
    [B]new := TStringList.Create;[/B]
    sk:= TStringList.Create; 
    sk.Text:=text;
    ...
    end;
    
     
    #4 [stranger], 8 Apr 2010
    Last edited: 8 Apr 2010
  5. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    добавил всеравно этоже ошибка
     
  6. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    1. Код можно было уменьшить в 2, а то и в 3 раза. Как сказал DeepBlue7, повтор есть.
    На пример: Цикл, зачем 3 раза, если можно 1 раз, всеравно нет глобально зависящих переменных.
    2. Насчет ошибки, при повторном запуске он пробует считать данных которых нет. Следовательно F8 и смотри, где убиваются они.
     
  7. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    непамогло(((
     
  8. Refqs

    Refqs Banned

    Joined:
    20 Feb 2010
    Messages:
    139
    Likes Received:
    56
    Reputations:
    27
    free юзай не будет столько жрать
     
  9. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    юзаю
     
  10. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    На выполнении какой строки ошибка происходит?
     
  11. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    на вызов функции показывает
     
  12. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    А в функции на какой строке?
     
  13. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Код ужасен, его невозможно читать.
    Юзай регулярки. А если хочешь сэкономить память то создавай объект регулярки перед использованием и сразу уничтожай.
    Кстати, установи себе EurekaLog, подключи к проекту и все утечки как на ладони, профит.
     
  14. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    Ок пасмотрим)
    в принцыпе немного изменив код(сразу вставил в кнопку) нашол проблемму, она вылетает на строке sk := TStringList.Create;