Tree problems

I've got to go to work soon so I thought I'd see if anyone can figure out what I've done wrong, if there are leaks I can fix those later but I need this tree to display correctly
When I try and load a tree from file it keeps duplicating, or when I try other methods I get a sub root which is not what I want.
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
60
61
62
63
64
65
66
67
68
69
70
void ME::HTLoad(void) {
	HWB = 0;
	di = DB->GetSelection();
	wxTreeItemId r, i;
	HT->CollapseAndReset(rti);
	//rti = HTRoot();
	if (di.IsOk()) {
		wxString s;
		HTSet();
		if (HTFT) {
			rti = HTAdd(rti, wxT("(m)"), 3);
			HTFT = false;
		} i = rti;
		if (i.IsOk()) {
			s = htf.GetFirstLine();
			HTLoad(i, s); MB(s);
			HT->SelectItem(i);
		}
	}
}
wxString ME::HTLoad(wxTreeItemId& r, wxString s) {
	wxTreeItemId i, p; u16 k = 0, n;
	wxString s1, s2, s3, t;
	int xl, m = 2;
	HACK *d, *h = getIH(r), *ph; ph = h;
	while (!htf.Eof()) {
		switch (m) {
		case 1:
			ht1 = s.SubString(0, 3);
			ht2 = s.SubString(4, 7);
			ht3 = s.SubString(9, 12);
			ht4 = s.SubString(13, 16);
			n = (u16)getHEX(ht2);
			k = (u16)getHEX(ht4);
			d->hid = n;
			if (t.Cmp(wxT("(m)")) == 0) { i = r; }
			else if (k != h->hid) {
				if (!p.IsOk() || k != ph->hid) {
					p = HTFind(k);
					ph = getIH(p);
				} i = HTAdd(p, t, 3);
			} else { i = HTAdd(r, t, 3); }
			setIH(i, d);
			m = 3;
			break;
		case 2: case 3:
			s3 = s.SubString(0, 0);
			if (s3.Cmp(wxT('"')) == 0) {
				s1 = s.SubString(s.length() - 1, -1);
				t = s.SubString(1, s.length() - 3);
				m = 1; d = new HACK; d->use = (bool)getHEX(s1);
				break;
			}
		default:
			if (m > 2) {
				if (s.length() > 16) {
					xl = (int)getHEX(s.SubString(18, -1));
				} else { xl = 0; }
				s1 = s.SubString(0, 7);
				s2 = s.SubString(9, 16);
				d->cPart1.Add(s1);
				d->cPart2.Add(s2);
				d->cLines.Add(xl);
				setIH(i, d);
			}
		} if (!htf.Eof()) { s = htf.GetNextLine(); }
	} HTJ = HT->GetCount();
	//delete d;
	return s;
}
File it loads from is this:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
"(m)"1
00000001 00000000
409E8A04 00300000;1
"Max Gil"1
00000002 00000001
0854C008 05F5E0FF;1
"Full Menu"1
00000003 00000001
0054C200 000000FF;1
"All Characters"1
00000004 00000001
"Instant Actions"1
00000005 00000004
0A9E8A8C 0002F404;2
00000000 0000FFFF
"Max HP"1
00000006 00000004
0854E210 00007FFF;1
"Infinite HP"1
00000007 00000004
2854E22C 0054E250;1
"Max Stats"1
00000008 00000004
0A54E232 00007110;2
00000000 FFFFFFFF
0A54E218 00007110;2
00000000 42C7FFFF
0A54E21C 00007110;2
00000000 42C7FFFF
0A54E220 00007110;2
00000000 42C7FFFF
0A54E224 00007110;2
00000000 42C7FFFF
"Great Defence"0
00000009 00000004
0A54E236 00007110;2
00000000 FFFFFFFF
0A54E26A 00007110;2
00000000 00000000
"Inventory"1
0000000A 00000001
4456FBDC FFFB0000;1
"All Key Items"0
0000000B 0000000A
"All Loot"1
0000000C 0000000A
085589E4 000000EB;1
00552C70 00000063;1
0A552CB0 000001EB;2
00000000 00630063
045585B6 00002000;1
0A5585B8 0000016B;2
00020002 20212020
0A558764 00000107;2
00020002 21012100
0A558780 00000103;2
00020002 21132112
"All Abilities"1
0000000D 0000000A
0054E204 000000FF;1
0A553070 00000104;2
00000000 FFFFFFFF
065580E4 00000117;2
00000001 00004000
06558114 00000150;2
00000001 00003000
045581B4 00003050;1
085589D8 00000018;1
085589DC 00000051;1
"All Items"1
0000000E 0000000A
085589B8 00000024;1
08553920 FFFFFFFF;1
08553924 FFFFFFFF;1
065528A8 00000140;2
00000000 00000032
06557ACC 00000116;2
00000001 00000000
06557AF8 0000010A;2
00000001 0000002B
08557B0C 003D0035;1
08557B10 003F003E;1
"All Weapons"1
0000000F 0000000A
085589BC 000000A7;1
0655292A 000001A6;2
00000000 00000006
04552AA6 00000006;1
06557B40 000001A6;2
00000001 00000FFB
04557C8C 000010BF;1
"All Ammo"1
00000010 0000000A
085589C8 00000032;1
06552C30 00000120;2
00000000 00000006
06557E54 00000120;2
00000001 00001184
"All Armour"1
00000011 0000000A
085589C0 0000008C;1
06552AB8 0000018C;2
00000000 00000006
06557CDC 0000018C;2
00000001 000010C8
"All Accessories"1
00000012 0000000A
085589C4 00000030;1
06552BD0 00000130;2
00000000 00000006
06557DF4 00000130;2
00000001 00001154
"All Gambits"1
00000013 0000000A
0A553080 00000107;2
00000000 FFFFFFFF
06557EE4 000001E2;2
00000001 00006000
Didn't close the file
Topic archived. No new replies allowed.