Hmm..mir ist grad wieder was aufgefallen was nicht funktioniert(wieder Problem mit der Übergabe eines Records..)
Ich habe den Code von opfer.der.genauigkeit genommen.
Das ganze baut darauf auf das ich vorher eine Liste fülle und sie dann an einen Rekord übergebe damit ich Value und IsChild auslesen kann:
Unit1
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| ...
private fTreeListRecord: TTreeListRecord;
...
function TForm1.InitChecklistPrintDlg(aTreeList: TdxTreeList): boolean; var lNodeCount: integer; lItemCount: integer; lCounter: integer; lCounter2: integer; lValue: string; lNode: TdxTreeListNode; begin result := false; lChecklistePrintProcessMgr := nil; try lChecklistePrintProcessMgr := TChecklistePrintProcessMgr.Create; lNodeCount := aTreeList.Count;
for lCounter := 0 to lNodeCount-1 do begin lNode := aTreeList.Items[lCounter]; lValue := lNode.Values[0] + ' ' + lNode.Values[2];
with fTreeListRecord do begin Value := lValue; IsChild := false; end; lChecklistePrintProcessMgr.AddToList(fTreeListRecord);
lItemCount := lNode.Count;
for lCounter2 := 0 to lItemCount-1 do begin lValue := lNode.Items[lCounter2].Values[2];
with fTreeListRecord do begin Value := lValue; IsChild := true; end;
lChecklistePrintProcessMgr.AddToList(fTreeListRecord); end; end;
result := true; except end; end; |
Unit2
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| PTreeListRecord = ^TTreeListRecord; TTreeListRecord = record Value: string; IsChild: boolean; end;
...
private TreeListRecord: ^TTreeListRecord;
...
function TChecklistePrintProcessMgr.AddToList( aTreeListRecord: TTreeListRecord): boolean; begin result := false; try fTreeList.Add(@aTreeListRecord); result := true; except end; end;
function TChecklistePrintProcessMgr.PrepareData: boolean; var lTreeListCount: integer; begin Result := false; lTreeListCount := fTreeList.Count;
for lCounter := 0 to lTreeListCount-1 do begin
TreeListRecord := fTreeList.Items[lCounter]; ShowMessage(TreeListRecord^.Value); end; |
Der markierte Code ist nur ein Test.. allerdings funktioniert es nicht.. ich bekomme jedes mal wenn er die markierte Zeile erreicht folgende Fehlermeldung:
Quelltext
1:
| Im Projekt Project1.exe ist eine Exception der Klasse EExternalException aufgetreten. Meldung: 'Externe Exception 80000001'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. |
Danach gehts nicht mehr weiter. Ich weiss bei dieser Fehlermeldung leider nicht mehr weiter.. Bitte um Hilfe!
Dankeschön.
Diskutiere nie mit einem Irren - er zieht dich auf sein Niveau und schlägt dich mit seiner Erfahrung.