Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Inhalt von 2 Stringgrids Synchronisieren

  Alt 8. Jun 2009, 09:00
300 Zeilen ist wenig, selbst 1000 sind noch wenig. StringGrids werden so ab 10.000 ziemlich verschwenderisch.

Also ich würde die Aufgaben erst mal aufsplitten, StringGrid Reihen sind normale TStrings.

1) Funktion zum Vergleichen von TStrings (evtl ginge sogar ein Vergleich von DelimitedText)
2) Schleife die ungleiche TStrings in einem Grid oder Array sammeln
3) Das Grid (oder Array), das gesammelt hat in das andere kopieren


1)
Delphi-Quellcode:
function StrListEqual(StringsA, StringsB : TStrings):Boolean;
var
  i, Count : Integer;
begin
  Result := False;
  Count := StringsA.Count;
  if Count = StringsB.Count then
  begin
    i := 0;
    while i < Count do
      if StringsA[i] <> StringsB[i] then Exit;
    Result := True;
  end;
end;
3)
Delphi-Quellcode:
procedure CopyStringGrid(FromGrid, ToGrid : TStringGrid);
var
  i, Count : Integer;
begin
  Count := FromGrid.RowCount;
  ToGrid.RowCount := Count;
  for i := 0 to Count-1 do
    ToGrid.Rows[i].Assign(FromGrid.Rows[i]);
end;
Fehlt noch die Aufgabe 2)

StringGrid B zeilenweise mit A Vergleichen und bei Bedarf an A anhängen. Danach A -> B kopieren. Der Vergleich kann noch mit UpperCase CaseInsensiv gestaltet werden. bei neueren Delphi-Versionen kann auch DelimitedText mit CompareStr verglichen werden.
  Mit Zitat antworten Zitat