Beiträge: 396
Themen: 8
Registriert seit: Sep 2013
Bewertung:
0
Die Ausgabe ohne Debugger sind Pointer im doppelten Abstand der Offsets. Das ergbit keinerlei Sinn, es sei denn der Compiler wäre 64bit aware ;-)
Mit Debugger sieht das korrekt aus. Klar ist natürlich auch, dass es beim Freigeben des Strings crashed, wenn dort Müll drin steht. frage ist nur woher kommt der Müll? Ist das gleich nach dem Initialisieren schon so? Wenn ja, dann ist es offenslichtlich ein Compiler Fehler. Komisch nur dass es bei OS3 nicht auftritt.
Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
Da du selten Zeit hast fasse ich mich kurz.
Mit Initialisieren meinst du beim anlegen des Listviews ?
das passiert in ntuib_listview{} ?
Ich werde das prüfen....
Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
Ok, der *listViewpointer wird schonmal nicht getrasht !
copa_ReadDirectorytoListView Pointer = 632883020
ntui_addListView Pointer :632883020
ntui_addListView Pointer :632883020
ntui_addListView Pointer :632883020
ntui_addListView Pointer :632883020
Die erste Ausgabe ist der Pointer den ich auslese in Copacabana nach ! der Erstellung
die anderen Ausgaben sind dann von ntui_addlistview, also das passt schonmal.... na wenigstens was...... :ugeek:
wobei, der Pointer muß auch nicht mal passen oder(?)
ich denke irgendwas trasht listItem\rawLabel oder generell alle Einträge....
Beiträge: 396
Themen: 8
Registriert seit: Sep 2013
Bewertung:
0
Mit Initialisierung meinte ich das Setzen der Werte in ListItem.
Also hier (dein Codeausschnitt)
[ab3]*listItem\itemID = itemID
*listItem\addFlags = flags|#TUIF_DIRTY
*listItem\cellA = Null
*listItem\cellSize = 0
*listItem\colN = 0
*listItem\userData = userData
*listItem\rawLabel = Null[/ab3]
Kannst du direkt danach mal *listItem\rawLabel ausgeben? Das sollte 0 sein. Wenn nicht, ist offensichtlich der generierte Code korrupt oder wird nicht korrekt ausgeführt unter MOS. Wenn es 0 ist, dann schau bei verschiedenen Gelegenheiten nach und versuche zu finden wo es auf einmal nicht mehr 0 ist. Das sollte nach str_WritePtr der fall sein. Ab dann sollte sich der Wert nicht mehr ändern.
Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
Ok, ich habe nun im Listview alles ausgeben lassen das irgendwie was mit \rawLabel zu tun hat/haben könnte:
Das hier bekomme ich beim starten meines Programms (ohne Debugger):
SetListViewAttr Point 1 :: listItem\title\rawLabel = 0
SetListViewAttr Point 1 :: listItem\title\rawLabel = 0
SetListViewAttr Point 1 :: listItem\title\rawLabel = 0
CalculateListViewMinSize :: listItem\title\rawLabel = 649334528
redrawTuiListView :: listItem\title\rawLabel = 649334528
Das ist nochmal aus dem Programm der ermittelte Listview per ntui_Getxxxx
copa_ReadDirectorytoListView Pointer = 649333836
und das bis zum Crash:
addListItem :: listView = 649333836
addListItem :: listItem\rawLabel = 269610212
addListItem :: listView = 649333836
addListItem :: listItem\rawLabel = 269610268
addListItem :: listView = 649333836
addListItem :: listItem\rawLabel = 269610324
und das sind die Ausgaben mit angeschaltetem Debugger:
SetListViewAttr Point 1 :: listItem\title\rawLabel = 0
SetListViewAttr Point 1 :: listItem\title\rawLabel = 0
SetListViewAttr Point 1 :: listItem\title\rawLabel = 0
CalculateListViewMinSize :: listItem\title\rawLabel = 671570968
redrawTuiListView :: listItem\title\rawLabel = 671570968
copa_ReadDirectorytoListView Pointer = 670620436
addListItem :: listView = 670620436
addListItem :: listItem\rawLabel = 0
addListItem :: listView = 670620436
addListItem :: listItem\rawLabel = 0
addListItem :: listView = 670620436
addListItem :: listItem\rawLabel = 0
addListItem :: listView = 670620436
addListItem :: listItem\rawLabel = 0
addListItem :: listView = 670620436
addListItem :: listItem\rawLabel = 0
addListItem :: listView = 670620436
addListItem :: listItem\rawLabel = 0
addListItem :: listView = 670620436
addListItem :: listItem\rawLabel = 0
addListItem :: listView = 670620436
addListItem :: listItem\rawLabel = 0
redrawTuiListView :: listItem\title\rawLabel = 671570968
redrawTuiListView :: listItem\rawLabel = 671586568
redrawTuiListView :: listItem\rawLabel = 671566912
redrawTuiListView :: listItem\rawLabel = 671567800
redrawTuiListView :: listItem\rawLabel = 671568392
redrawTuiListView :: listItem\rawLabel = 667446760
redrawTuiListView :: listItem\rawLabel = 671570680
redrawTuiListView :: listItem\title\rawLabel = 671570968
redrawTuiListView :: listItem\rawLabel = 671586568
redrawTuiListView :: listItem\rawLabel = 671566912
redrawTuiListView :: listItem\rawLabel = 671567800
redrawTuiListView :: listItem\rawLabel = 671568392
redrawTuiListView :: listItem\rawLabel = 667446760
redrawTuiListView :: listItem\rawLabel = 671570680
Beiträge: 289
Themen: 10
Registriert seit: Oct 2013
Bewertung:
0
So wenn ich das jetzt richtig aus deinen Debugdaten entnehme crashed dein Programm nach bzw. beim vierten Aufruf von AddListItem.
Erfolgt jetzt die Debugausgabe vor dem strptr_Write{} Aufruf oder danach?
Ich habe hier zum testen eine Version von obj_listview.ab3 und damit compiliertem AIDE das mir die Listviewdaten vor dem Aufruf von strptr_Write{} ausgibt und ebenso danach mit den von strptr_Write{} angelegten Daten also Länge des Strings und den String. Hast du daran Interesse?