Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Посмотрите пожалуйста свежим взглядом!   Найти похожие ветки 

 
pathfinder   (2005-09-02 21:24) [0]

Что-то ему не нравится в цикле repeat..until Вылезает ошибка "Access violation at adress..."
procedure TForm1.Button1Click(Sender: TObject);
var
St:TStringList;
i, c, n, n1, n2:integer;
S:string;
begin
St:=TStringList.Create;
 if opendialog1.Execute then
  begin
   St.LoadFromFile(opendialog1.FileName);
   for i:=0 to St.Count-1 do
    begin
     S:=St.strings[i];
      if (S[897]="/") and (S[900]="/") then  
       begin
        //begin
         for n:=898 to 922 do
          begin
           S[n-1]:=S[n];
          end;
        //end;

        if (S[897]="M") and (S[899]="/") and (S[916]<>" ") then  
         begin
          for n1:=899 to 922 do
           begin
            S[n1-2]:=S[n1];
           end;
         end;

        if (S[897]="/") and (S[916]<>" ") then
         begin
          S[899]:=".";
          c:=900;
          repeat
          S[c]:=S[c+1];
          c:=c+1;
          until (S[900]="/");
         end;

       end;
     St.Strings[i]:=S;
    end;
  end;
St.SaveToFile("out.txt");
end;

end.


 
Eraser ©   (2005-09-02 21:38) [1]

pathfinder   (02.09.05 21:24)
в цикле repeat..until Вылезает ошибка


Почему бы сразу не сказать ГДЕ конкретно в цикле вылетает ошибка...?

Вообще код, мягко говоря, неуниверсальный )


 
Alexander Panov ©   (2005-09-02 21:40) [2]

1. Отоформатируй как следует код - уважай тех, кто может помочь тебе.
2. Заметь, что строка может быть короче, чем (S[897]="/") and (S[900]="/")

Такие вещи надо контролировать, поэтому кроме тебя без исходных данных никто не отладит твой код.


 
begin...end ©   (2005-09-02 21:55) [3]

> pathfinder   (02.09.05 21:24)

> c:=900;
> repeat
> S[c]:=S[c+1];
> c:=c+1;
> until (S[900]="/");

Посмотрел свежим взглядом. Не понял, зачем здесь цикл. Он будет либо продолжаться до первого исключения из-за выхода за границы строки, либо выполнится один раз.


 
pathfinder   (2005-09-02 22:03) [4]


> begin...end ©

Цикл для того, чтобы сдвигать символы начиная с 901 позиции на одну позицию влево до тех пор пока в поз. 900 не будет символа "/". Но почему-то не работает(


 
pathfinder   (2005-09-02 22:06) [5]


> Eraser ©  


> Почему бы сразу не сказать ГДЕ конкретно в цикле вылетает
> ошибка...?

если бы я знал..просто без этого цикла ее нет

> Вообще код, мягко говоря, неуниверсальный )

а кто говорит, что это супер-код?)


> Alexander Panov ©


> 1. Отоформатируй как следует код - уважай тех, кто может
> помочь тебе.

старался как мог..простите, если что не так.


 
Alexander Panov ©   (2005-09-02 22:13) [6]

Для каждой строки в цикле по списку строк:

s := List[i];
s1 := Copy(List[i],901,10000);
n := Pos("/",s1);
if n>0
  then List[i] := Copy(s,1,900)+Copy(s1,n,Length(s1)-1);
  else List[i] := Copy(s,1,900);
end;


 
Alexander Panov ©   (2005-09-02 22:14) [7]

Alexander Panov ©   (02.09.05 22:13) [6]
Length(s1)-1);

Это не обязательно, можно просто 10000


 
pathfinder   (2005-09-02 22:20) [8]

Спасибо! Разобрался наконец таки)


 
Alexander Panov ©   (2005-09-02 22:22) [9]

pathfinder   (02.09.05 22:20) [8]

Я думаю, что тебе просто нужно посмотреть свежим;) на функции Copy, Pos



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.013 c
1-1125501595
Dmitrich
2005-08-31 19:19
2005.10.09
Загрузка потока в Excel


14-1127073320
NailMan
2005-09-18 23:55
2005.10.09
Элетронщики! Помогите со схемкой!


2-1125590338
Гость22
2005-09-01 19:58
2005.10.09
Как вызвать процедуру?


4-1123418703
psa247
2005-08-07 16:45
2005.10.09
ProcessID -> Путь Filename.exe


14-1126841752
MBo
2005-09-16 07:35
2005.10.09
Пятничные задачки. Разомнем извилины.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский