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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2011, 01:13   #11
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Как реализовать что бы не нужно было прописывать полный путь к файлу
первое что приходит в голову
Код:
procedure TForm1.FormCreat(Sender: Object)
var
  Path: string;
begin
  Path := GetCurrentDir; // = D:\Progs\Sravnilka (без последнего знака '\')
end;
при работе с таблицами надо пользоваца циклами, один цикл вложеныи в другои,
для перебора строк и столбцов
11 12 13 14
21 22 23 24
.. .. .. ..
71 72 73 74
если перебирать нужно только строку одного цикла достаточно потому что из двух параметров один остаеца неизменным
если же сравнивать 2 строки или 2 столбца, нужно 2 вложеных цикла, один для первои строки, другои для второи
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 15.02.2011, 17:03   #12
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

А как сделать что бы результат сравнения выводился не в Мемо а в StringGrid?
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 15.02.2011, 18:01   #13
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

как в первом класе чес слово
поставь вместо Memo, StringGrid
ты просто ждеш пока кто нибудь зделает за тебя?
думаи!
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 16.02.2011, 12:21   #14
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Вот попробовал так
Цитата:
procedure TForm1.Button3Click(Sender: TObject);
var
i,j,k,l:integer;
A : boolean;
begin
begin
A := False;
for i := 1 to StringGrid1.RowCount - 1 do
begin
for j := 1 to StringGrid2.RowCount - 1 do
if StringGrid1.Cells[0, i] = StringGrid2.Cells[0, j] then A := True;
if A = True then
for l:=i to 10 do
for k:=0 to 5 do
Form2.StringGrid1.Cells[k,l]:=Form1.StringGrid1.Cells[k,l];
A := False;
end;
Form2.ShowModal;
end;
Выводит совпадения до первого различия. И названия столбцов не выводит. Что не так?
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 16.02.2011, 12:41   #15
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Выводит совпадения до первого различия
странно что вообше компилица
Код:
A : boolean;
begin
begin
A := False;
___________________________________ ____________________________
Цитата:
for l:=i to 10 do
for k:=0 to 5 do
Form2.StringGrid1.Cells[k,l]:=Form1.StringGrid1.Cells[k,l];
етим кодом ты что хотел зделать?
VirusN13

Последний раз редактировалось ArtGrek; 16.02.2011 в 12:45.
ArtGrek вне форума Ответить с цитированием
Старый 16.02.2011, 12:47   #16
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Цитата:
A : boolean;
begin
begin
A := False;
Исправил
Но вот тут не знаю что делать
Цитата:
A := False;
for i := 1 to StringGrid1.RowCount - 1 do
begin
for j := 1 to StringGrid2.RowCount - 1 do
if StringGrid1.Cells[0, i] = StringGrid2.Cells[0, j] then A := True;
if A = True then
for l:=i to 6 do
for k:=0 to 6 do
Form2.StringGrid1.Cells[k,l]:=Form1.StringGrid1.Cells[k,l];
A := False;
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 16.02.2011, 12:53   #17
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
for l:=i to 10 do
for k:=0 to 5 do
Form2.StringGrid1.Cells[k,l]:=Form1.StringGrid1.Cells[k,l];
етим кодом ты что хотел зделать?
вернее в каие ячеики ты хотел сохранить на второи форме?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 16.02.2011, 12:58   #18
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Изменил так.
Цитата:
A := False;
for i := 1 to StringGrid1.RowCount - 1 do
begin
for j := 1 to StringGrid2.RowCount - 1 do
if StringGrid1.Cells[0, i] = StringGrid2.Cells[0, j] then A := True;
if A = True then
for l:=i-1 to 6 do
for k:=0 to 6 do
Form2.StringGrid1.Cells[k,l]:=Form1.StringGrid1.Cells[k,l];
A := False;
Теперь названия столбцов отображаются.

Я хочу сделать что бы во второй форме в StringGrid вывелись совпадения которые есть и в первом и во втором файле. (сравнивается первый столбец, если одинаковый "Инд. Код", то вся строка первого файла должна перенестись в StringGrid второй формы)

Фишка вот еще в чем. Не все столбцы переносятся
Надо чтобы было
Инд. Код Фамилия Имя Оттчество Дата приема на работу Дата увольнения
А у меня только Инд. Код Фамилия Имя Оттчество Дата приема на работу
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 16.02.2011, 13:07   #19
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  i,j,l:integer;
  A : boolean;
  k: integer;
begin
  A := False;
  k := 0;
  for i := 0 to StringGrid1.RowCount - 1 do
  begin
    for j := 0 to StringGrid2.RowCount - 1 do
      if StringGrid1.Cells[0, i] = StringGrid2.Cells[0, j] then A := True;
      b A = True then
      begin
        for l:=0 to StringGrid1.ColCount - 1 do
          Form2.StringGrid1.Cells[l,k]:=Form1.StringGrid1.Cells[l,i];
        inc(k);
      end;
    A := False;
  end;
  Form2.ShowModal;
end;
код надо так писать, по ступенькам, легче видеть что пишеш, не будет ошибок типа бегин бегин,
и нам легче разбираца
не проверял но должно работать
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 16.02.2011, 13:48   #20
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

ArtGrek, Огромное спасибо! Работает. Но вот такой вопрос еще:
По умолчанию в StringGrid RowCount и ColCount равняется 5. Потому у меня и не отображался один результат проверки и один столбец. Сделал RowCount = 6 и ColCount = 6 и все нормально.
Но как быть если у меня будут списки на 1000-1500 людей (каждый раз разное количество)? Можно конечно сразу ввести RowCount = 2000 и не мучиться, но хотелось бы и с этим разобраться.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить два текстовых файла assch Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 17 29.09.2010 14:41
Как быстро сравнить два похожих файла? myza Microsoft Office Excel 8 26.08.2010 08:59
Сравнить два множества. Pascal MaxMelnikov Помощь студентам 3 16.03.2009 09:35
как в перле можно сравнить два файла? menik Помощь студентам 1 23.02.2009 10:16
Сравнить два файла Aleksandr Microsoft Office Excel 6 07.10.2008 00:22