ich brauche mal eure Hilfe; wahrscheinlich ist es ein einfaches Problem - deshalb im Einsteigerbereich. Ich habe auch schon im Forum gesucht und diesen Thread gefunden:
viewtopic.php?f=55&t=14512, komme es aber nicht hin.
Das Problem ist, dass ich 3 Listen in txt-Files einlese, die jeweils eine Knotennummer und einen Spannungswert enthalten, die zusammengeführt werden sollen. Dämlicherweise sind die Listen nicht nach Knotennummern sortiert (sondern nach dem Wert - so fällt es aus dem Programm raus).
Mein Gedanke war, die Listen jeweils in einer TObjectList<TStressEntry> zu speichern, wobei der TStressEntry definiert ist als "Pärchen" aus KnotenID und Spannungswert:
Code: Alles auswählen
type
TStressEntry = class
ID: integer;
stress: TMyReal;
end;
TStressList = specialize TObjectList<TStressEntry>;
Das Einlesen der drei Listen aus den Text-Files funktioniert; Ergebnis sind 3 StressList-en. Jetzt müssten die nach der Knotennummer ID sortiert werden, so dass die jeweiligen Spannungswerte zum selben Knoten an der selben Position in den Listen stehen (und zusammen geführt werden können.
Im oben genannten Link wurde vorgeschlagen, eine Funktion Compare zu definieren:
Code: Alles auswählen
function CompareStressList(Item1, Item2: Pointer): integer;
Code: Alles auswählen
// sort the ObjectLists for NodeID
StressList_Min.Sort(@CompareStressList);
StressList_Int.Sort(@CompareStressList);
StressList_Max.Sort(@CompareStressList);
Allerdings gelingt es mir nicht, in der Compare-Funktion, auf die ID zuzugreifen (und so zu vergleichen - ich würde einfach die IDs voneinander abziehen wollen). Irgendwie komme ich mit den Pointern und den Elementen der Entries durcheinander.
Wie müsste diese Vergleichsfunktion denn Funktion aussehen?
Danke für jeden Hinweis.
Ciao,
Photor
PS: ich hatte auch schon an ein TDictionary mit dem Schlüssel KnotenID gedacht. Es scheint aber so zu sein, dass nicht erkannt wird, wenn die Knotennummer schon als Key vorhanden ist, wenn schon eine Liste eingelesen wurde - so fällt die Zuordnung dann schwer. Dieser Ansatz scheint mir aber auch zu sehr "durch die Brust ins Auge" zu sein.