Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2018, 20:29   #1
Алексей0001
Пользователь
 
Регистрация: 25.11.2017
Сообщений: 39
По умолчанию пояснить код

Здравствуйте, можете пояснить код? с комментариями
Код:
procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
var
  f: TextFile;                 
  iTmp, i, k, p: Integer;
  strTemp: String;
begin
  AssignFile(f, FileName);    
  Reset(f);                  
  with StringGrid do   
  begin
    i := 0;                     
    While Not Eof(f) do      
    begin
      Readln(f, strTemp);      
      Inc(i);                   
      RowCount := i;          

      strTemp := strTemp + #9;  
      p := 1;
      k := 0;
      While True do
      begin
        iTmp := PosEx(#9, strTemp, p);
        if iTmp = 0 then
          Break;
        Inc(k);
        If (i = 1) Or (ColCount < k) Then
          ColCount := k;

        Cells[k - 1, i - 1] := Copy(strTemp, p, iTmp - p);
        p := iTmp + 1;
        While (p <= Length(strTemp)) And (strTemp[p] = #9) Do
          Inc(p);
      end;
    end;
  end;
  CloseFile(f);
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  SlSort, SlRow: TStringList;
  i, j, aCol: Integer;
begin
  begin
    OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName);
    If OpenDialog1.Execute Then
      LoadStringGrid(StringGrid1, OpenDialog1.FileName);
  end;
  begin
    aCol := StringGrid1.FixedCols;

    SlSort := TStringList.Create;
    for i := StringGrid1.FixedRows to StringGrid1.RowCount - 1 do
    begin
      SlRow := TStringList.Create;
      SlRow.Assign(StringGrid1.Rows[i]);
      SlSort.AddObject(StringGrid1.Cells[aCol, i], SlRow);
    end;
    SlSort.Sort;
    j := 0;
    for i := StringGrid1.FixedRows to StringGrid1.RowCount - 1 do
    begin
      SlRow := Pointer(SlSort.Objects[j]);
      StringGrid1.Rows[i].Assign(SlRow);
      SlRow.Free;
      Inc(j);
    end;
    SlSort.Free;
  end;
end;



function DigitSort(L: TStringList; index1, index2: Integer): Integer;
var
  i1, i2: Integer;
begin
  i1 := StrToInt(Copy(L.Strings[index1], 1, Pos(#9, L.Strings[index1]) - 1));
  i2 := StrToInt(Copy(L.Strings[index2], 1, Pos(#9, L.Strings[index2]) - 1));
  result := CompareValue(i1, i2);
end;
Алексей0001 вне форума Ответить с цитированием
Старый 21.01.2018, 14:39   #2
Алексей0001
Пользователь
 
Регистрация: 25.11.2017
Сообщений: 39
По умолчанию

Код:
iTmp := PosEx(#9, strTemp, p);
 Cells[k - 1, i - 1] := Copy(strTemp, p, iTmp - p);
        p := iTmp + 1;
        While (p <= Length(strTemp)) And (strTemp[p] = #9) Do
  SlSort.AddObject(StringGrid1.Cells[aCol, i], SlRow);
 SlRow := Pointer(SlSort.Objects[j]);
    StringGrid1.Rows[i].Assign(SlRow);
7 строчек кода не понятны, с остальным разобрался, подскажите
Алексей0001 вне форума Ответить с цитированием
Старый 21.01.2018, 15:29   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ну если справка для вас непосильный труд, то хоть строчки читать начните, а то выглядите идиотом.
Код:
iTmp := PosEx(#9, strTemp, p);
iTmp присвоить то, что вернула функция поиска символ с кодом 9 в строке strTemp с позиции p. Что тут непонятно? А я всего лишь прочитал строку.
p51x вне форума Ответить с цитированием
Старый 22.01.2018, 12:16   #4
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Алексей0001 Посмотреть сообщение
7 строчек кода не понятны, с остальным разобрался, подскажите
Ставите курсор на непонятное слово и нажимаете F1.
Открывается окошко помощи, где сама дельфи вам расскажет что это и с чем его едят...
kropotkina-alice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Помогите) Какая здесь рекурсия? И как попроще пояснить код самой рекурсии? Dmitry L Помощь студентам 6 31.03.2015 17:45
Пояснить строку prikolist Общие вопросы C/C++ 10 25.03.2009 23:01