Ich hoffe ich Poste mein Problem / meine Frage in den richtigen Thread.
Es geht darum, das ich in meinem Programm gerne StringGrids als DatenContainer verwende. Ich habe verschiedene Prozeduren udn Funktionen, welche StringGrids bekommen, mit diesen arbeiten, verändern, zurückgeben.
Nun ist mir etwas aufgefallen. Trotz das ich mit TStringGrid.Creat(nil) unterschiedliche StringGrids erstelle, scheine ich immer auf dem gleichen StringGrid zu operieren. Kleines Beispiel:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var
sGrid_1: TStringGrid;
sGrid_2: TStringGrid;
begin
eineZahl := 0;
sGrid_1 := TStringGrid.Create(nil);
sGrid_2 := TStringGrid.Create(nil);
sGrid_1.Cells[0,0] := 'TEST';
sGrid_2 := fillGrid(sGrid_1);
ShowMessage(sGrid_1.Cells[0,0]);
ShowMessage(sGrid_2.Cells[0,0]);
sGrid_1.Free;
ShowMessage(sGrid_2.Cells[0,0]);
end;
function TForm1.fillGrid(grid: TStringGrid):TStringGrid;
begin
grid.Cells[0,0] := 'Ein anderer Test';
end;
In folgendem Beispiel habe ich 2 StringGrids erstellt. Ich habe in der Funktion extra kein var verwendet. Es ist also ein Call by Value und kein Call by Reference. Das heißt, es sollte eigentlich lediglich eine Wertübergabe statt finden. Trotzdem scheinen beide StringGrids ein und das selbe Objekt zu sein und ich verstehe das nicht. Vielleicht ist das StringGrid für mein Vorhaben auch gar nicht geeignet und ich zweckentfremde es hier. Falls dem so ist, kann mir jemand ein anderen ähnlichen Container vorschlagen in dem ich Daten ähnlich wie in einem StringGrid speichern kann?
Gruß
JeyJey