Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
NTUI : Listview
#21
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.
Zitieren
#22
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....
Zitieren
#23
Blackbird schrieb:
tomsmart1 schrieb:Kläre mich bitte auf damit ich es jetzt richtig verstehe .Ist es so das wenn du das Programm mit Debugger laufen lässt das dann die !cout() werte stimmen.

genau so ist es !

und genau das was ich gepostet habe, habe ich in den code vom ntui_obj.Listview geschrieben.
Da brauchst du nix testen (ausser du hast nun OS4 oder Mos)


Ok das ist dann sehr seltsam ???

So ich war so frei und habe trotzdem getestet mit !cout in ntui_obj.Listview additem. Ergebnis ich bekomme auf dem Amiga Os3.1 -3.9 immer die richtige Ausgabe ebenso unter WinUAE mit Amikit 1.7.0 und AROSvision was ich auch erwartet habe. Mir ist dabei aber eingefallen das MorphOS für die Speicherverwaltung von exec TLSF Allocater verwendet darauf habe ich mein 3.1 Testsystem auf TSLFMem V1.6 von Chris Hodges umgestellt und damit getestet aber mit dem gleichen Ergebis die Ausgabe ist immer richtig und die Listviews werden richtig angezeigt.
Zitieren
#24
Hmmm,

Ich habe an MorphOs3.7 nix geändert, auch an Ab3 nix. Es ist alles unverändert und läuft somit frisch wie eine unangetastete Jungfrau.
Trotzdem bekomme ich das nicht anders ausgegeben..........

will sagen, an mir liegts nicht :o Confusedhock: Wink Big Grin

Wenn mir nun einer sagen kann wie wo was ich anders testen/machen muß/soll, dann probier ich das aus.....
Zitieren
#25
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....
Zitieren
#26
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.
Zitieren
#27
Das ist doch genau der Codeabschnitt den ich checke in ntui_addListView...(?)
Danach kommt doch gleich die Abfrage für die strptr.include (?)
wie soll ich da rausfinden wer da noch dazwischen funkt ????

Erklär mir doch mal bitte in kurzem Abriss wie das Listview generell vom generieren bis zur Abfrage funktioniert.... Wenn das einer genau beschreiben kannn dann du, denn ich habe dadurch das MOS so ewig beim kompilieren braucht keinen Bock mehr dazu das alleine rauszufinden....das darfst du mir nicht übel nehmen !!! :roll: Confusedhock: :?
Zitieren
#28
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
Zitieren
#29
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?
Zitieren
#30
tomsmart1 schrieb:So wenn ich das jetzt richtig aus deinen Debugdaten entnehme crashed dein Programm nach bzw. beim vierten Aufruf von AddListItem.

Sir jawohl Sir

Zitat:Erfolgt jetzt die Debugausgabe vor dem strptr_Write{} Aufruf oder danach?

davor

Zitat: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?

nein...
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste