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

Вниз

организовать циклы нужно   Найти похожие ветки 

 
Igor2010   (2009-07-18 16:55) [0]

Ситуация вроде простая но видно не для меня.
В общем нужно пробежаться по двум спискам типа TStringList и удалить в Stringrid1 строки, равные в списках, относительно списка  GridSL(начиная с i:=0, а в StringGrid1 начиная с i+1).
Пробую так но это не правильно

//это нормально робит с DW взял
procedure SGDeleteRow(SG: TStringGrid; RowToDelete: Integer);
var
 i: Integer;
begin
 with SG do
 begin
   if (RowToDelete >= 0) and (RowToDelete < RowCount) then
   begin
     for i := RowToDelete to RowCount - 2 do
       Rows[i].Assign(Rows[i + 1]);
     RowCount := RowCount - 1;
   end;
 end;
end;

*************************************
//так вызываю

       i:=0;
       j:=0;
       while (i<=GridSL.Count-1) do
       begin

          b:=False;

          while (j<=ExcelSL.Count-1) do
          begin
             if GridSL.Strings[i]=ExcelSL.Strings[j] then
             begin

                 SGDeleteRow(Form1.StringGrid1, i+1);
                 GridSL.Delete(i);

                 b:=True;
                 break;
             end;
           
          end;
           j:=j+1;
           if not b then i:=i+1;
       end;

Если так делать, то получится не соответсвие списко, количество строк разное, или зацикливание....как только не пробовал ПОМОГИТЕ


 
СовестьДМ ©   (2009-07-18 18:50) [1]


> Igor2010   (18.07.09 16:55) 
> Ситуация вроде простая но видно не для меня.

истину глаголите чистую истину


 
KilkennyCat ©   (2009-07-18 19:18) [2]

фигню глаголит, а не истину. два списка, грид, и еще некий GridSL, про который неизвестно, входит ли он в число первых двух, иди это третий? собственно, без разницы, ибо инкрементировать j, которая участвует в цикле, которые бегает по списку, в котором удаляется! это круто.


 
KilkennyCat ©   (2009-07-18 19:23) [3]

хотя не, я тож фигню сказал. а все почему? потому что нехрен такие пременные одинаковые писать.

for i := 0 to spisok1.count - 1 do //точку старта сами подставляйте.
 for z := 0 to spisok2.count - 1 do
   if spisok1.strigs[i] = spisok2[z] then удаляем там че хотим.
end.


 
KilkennyCat ©   (2009-07-18 19:24) [4]

третью стройчку читать как if spisok1.strings[i] = spisok2.strings[z] then


 
KilkennyCat ©   (2009-07-18 19:25) [5]

end. лишницй. пойду-ка я лучше курить - в трех строчках куча опечаток... стылд и позор моей лысине.


 
xayam ©   (2009-07-18 20:28) [6]


> KilkennyCat


P.S А почему прочее не работает? Или это только у меня?


 
AlexDan ©   (2009-07-18 20:35) [7]

задача вообщем-то простая, нужно просто верно продумать логику..далее в таких случаях я просто долго отлаживаю пошаговым режимом, что значит не получается? в пошаговом режиме точно будет видно где.(сначала нужно естественно дать хоть какое-то информ. наполнение, чтобы и самому отлаживать)..


 
{RASkov} ©   (2009-07-18 20:47) [8]

> [7] AlexDan ©   (18.07.09 20:35)
> далее в таких случаях я просто долго отлаживаю пошаговым режимом

При этом измучишь половину пользователей данного форума) ...а то и всех

> [6] xayam ©   (18.07.09 20:28)
> Или это только у меня?

Не только(


 
AlexDan ©   (2009-07-18 20:50) [9]

> {RASkov} ©   (18.07.09 20:47) [8]
> При этом измучишь половину пользователей данного форума)
> ...а то и всех
тяжело в мученье, легко в бою(раю)..;)).


 
Igor2010   (2009-07-18 23:19) [10]


>    if spisok1.strigs[i] = spisok2[z] then удаляем там че
> хотим.
> end.


я б с радостью удалил чо хотел но там индекс то сместиться и палюбому через одну буду пропускать проверку в цикеле на равенство строк


 
Igor2010   (2009-07-18 23:22) [11]


> нужно просто верно продумать логику.


да уж....вот я здесь и задал вопрос потому что с логикой у меня проблема


 
Igor2010   (2009-07-18 23:24) [12]


> пойду-ка я лучше курить

ступайте же....только мне помогите сначала))))


 
Igor2010   (2009-07-18 23:31) [13]

Удалено модератором


 
KilkennyCat ©   (2009-07-18 23:35) [14]


> Igor2010 (18.07.09 23:24) [12]

куда уж больше-то????
осталось вложить один цикл на проверку соответствия строкам стрингрида, и все!
Это хоть и не самый оптимальный вариант, но надежный как танк.

for i := 0 to spisok1.count - 1 do
for z := 0 to spisok2.count - 1 do
  if spisok1.strings[i] = spisok2.strings[z] then
    for n := 1 to stringrid.count - 1 do
       if spisok1.strings[i] = stringrid.нужнаяячейка then begin
         spisok2.delete[z];
         StringGrid1.Rows.delete(n);
       end;


 
KilkennyCat ©   (2009-07-18 23:37) [15]

Удалено модератором


 
Igor2010   (2009-07-18 23:40) [16]

Удалено модератором



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

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

Наверх





Память: 0.49 MB
Время: 0.005 c
2-1247561775
b/@.
2009-07-14 12:56
2009.09.20
Как лучше хранить в реестре настройки нескольких форм ?


2-1247594116
dmitry_12_08_73
2009-07-14 21:55
2009.09.20
Программное управление Internet Explorer-ом


15-1246915947
Германн
2009-07-07 01:32
2009.09.20
Система "Экспресс-3" от РЖД


3-1227169884
balepa
2008-11-20 11:31
2009.09.20
результат запроса в массив


15-1248424846
Empleado
2009-07-24 12:40
2009.09.20
Что означает такая запись в объявлении типов? (D2009)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский