Source Upgrade was kann passieren?

12/26/2014 14:29 Terrat#16
Hab ich doch :D aber ich krieg ja nur das beim Debuggen von der Neuz was auch schon auf den Screen ist.
12/26/2014 15:44 Mognakor#17
Dann check mal den Function-Stack und guck welche Variable den NULL ist etc. etc.
12/26/2014 16:01 Razzer~#18
Schau mal in den Funktionsstack also mit einem Bild kann ich dir sagen, dass er bei der Suche einer Datei scheitert. Etwas fehlt dir wohl in deinem Client(???).
12/26/2014 16:56 Мentus#19
Quote:
Originally Posted by Dreamsläps View Post
Hab ich doch :D aber ich krieg ja nur das beim Debuggen von der Neuz was auch schon auf den Screen ist.
Ich würde so vorgehen:

- Aufrufliste, schau ob etwas nützliches dabei steht.
- Schau dir die Variablen an und check deren Werte, ob sie im Validen-Bereich liegen, und wenn nicht, schau welchen Grund es haben könnte. (Auch in den anderen Funktionen aus der Aufrufliste, oftmals werden falsche bzw nicht valide Werte direkt mit in den nächste Funktion in der es dann crasht übergeben)
- Setz breakpoints, die geben dir mehr Informationen zu der aktuellen Situation weil sie die Anwendung anhalten und dir ein Einblick in das Geschehen des Programms geben.


Falls du dich nicht mit breakpoints auskennst, kann man alternativ noch auf die "Assertion" zurückgreifen z.B
PHP Code:
assert(Variable !=NULL); 
Dort wird meist ein true oder false Wert als Argument übergeben, hier mehr dazu: Assertion (Informatik) ? Wikipedia

Hat zwar nichts mit dem Debugger zu tun, jedoch kannst du dir so anschauen welche Variablen nicht valide sind.
12/26/2014 18:04 Wanetrain#20
Soo mein lieber, ich frage dich jetzt mal von wo aus die die Source upgraden willst überhaupt? war sie davor schon auf 2010/12?

Wenn von 2003, dann merkt man das du dich nicht über den neuen Standart von C++ Informiert hast, denn in dem schönen dreck von wegen ".res" laden findest du ein time_t, Merge2 nimt dort auch time_t, allerdings ist das in Merge2 int32, was 4 Bytes groß ist, deine Source wenn du sie neu erstellst mit den einstellungen von Vs 2010+ wird da wiederrum int64 nutzen was 8 bytes hat, was passiert wohl? datei wird falsch ausgelesen, die ganze kacke schlägt fehl und wir kommen zu deinem Error.

Du kannst den derzeitigen ASM code einsehen mit dem Compiler, dazu benötigt man allerdings mehr wissen mit Visual Studio, denn da kannst du dir genau die Position raus suchen wo es Crasht, nun noch etwas nachlesen und du weißt exact wo es crasht.



Mfg.
12/26/2014 18:12 Terrat#21
Ty werde mal gucken hatte mich schon über die warnings beim comp. mit time_t gewundert.
12/26/2014 18:21 Razzer~#22
@Wanetrain

Was du hier gerade von dir gibst basiert nur auf deinem Grundwissen der Source. Es könnte aber doch sein, dass jemand versucht hier die Soruce upzugraden ohne zu wissen wie die Resource Daten ausgelesen werden? Wie sollte dann diese Person alleine ohne 5 Jahre Erfahrung drauf kommen, das für time_t aus der std bei vs13 int64 benutzt wird?

Und hier muss ich Mentus deutlich recht geben, dass erste was ein Programmierer macht ist die Schritte davor zu analysieren und nicht gleich die Source von 2003 mit der versuchten 2013er zu vergleichen , ausser man hat wie du 5 Jahre Erfahung und ist im Buisness.

Ich hätte ihm auch gleich die Lösung sagen können, doch wozu? Vll kriegt er es selbst raus und lernt daraus was?

Soll kein hate gegen dich sein:) Nur bissl konstruktive Kritik an deiner Haltung und sonst was, lese jetzt seit Tagen eure "Ausseinandersetzung" / "E-Penis-Vergleich" .


MfG
12/26/2014 19:49 Terrat#23
Wie mache ich jetzt das er bei time_t int32 nutzt ? Schätze "Konvertieren" geht nicht oder wie soll ich das jetzt machen?
12/26/2014 19:53 Razzer~#24
Einfach einen int32 nehmen?


PHP Code:
Time type
Alias of a fundamental arithmetic type capable of representing times
, as those returned by function time.

For 
historical reasonsit is generally implemented as an integral value representing the number of seconds elapsed since 00:00 hoursJan 11970 UTC (i.e., a unix timestamp). Although libraries may implement this type using alternative time representations.

Portable programs should not use values of this type directlybut always rely on calls to elements of the standard library to translate them to portable types
12/26/2014 20:00 Terrat#25
Also jetzt überall long und so durch __int32 ersetzen ?

#Edit habe geade im Include das hier gefunden:
#define _USE_32BIT_TIME_T //bin das mal testen
12/26/2014 21:49 Wanetrain#26
Quote:
Originally Posted by Dreamsläps View Post
Also jetzt überall long und so durch __int32 ersetzen ?

#Edit habe geade im Include das hier gefunden:
#define _USE_32BIT_TIME_T //bin das mal testen
Nein..bitte nicht.

Du gehst in "CResFile::AddResource( TCHAR* lpszResName )" da findest du weiter unten eine lustige For Schleife, darin steht etwas von "time" (memcpy), diese time_t änderst du einfach in "__time32_t" oder du Definierst das ganze, allerdings könnte das andere Fehler hervorrufen was ich nicht tun würde.

@Razzer denkst du ich hab umsonst das mit time_t geschrieben? klar hey, ich bin blööd und weiß nicht das es eigentlich seit den Updates von C (++) ein scheiß int64 ist. Meine güte.

Dann das zu den Schritten von Mentus, nein ist nicht notwendig hier, da der Error recht simpel zu erklären ist, was soll denn deiner meinung nach spez. auf diesen Error bei Breakpoints raus kommen? die kacke wird Normal ausgelesen, nur es kommt der Zeitpunkt wo man crap aussließt, das ist alles, da kommt der Compiler dann nicht "Ja he, da isn Fehler".

Zu guter letzt: VC Debugger nutzen, alles recht und gut nur sollte man es auch richtig! (Aber hey, ihr wisst ja wie es geht was?)

Ps: das hat rein garnichts mit ePenis zutun, reine erfahrung die hier eine Rolle spielt. ;)