![]() |
Delphi-Version: 2010
Umstellung von Delphi 7 auf 2010
Hallo zusammen,
ich bin gerade dabei, eine mit Delphi 7 entwickelte Anwendung auf Delphi 2010 umzustellen. Das hat auch soweit funktioniert, nur bekomme ich beim Beenden der Anwendung Zugriffsverletzungen an verschiedenen Stellen. Mir kommt es so vor, als wäre die Reihenfolge, in der die Objekte zerstört werden, durcheinander gekommen. Der gleiche Quellcode funktioniert unter Delphi 7 reibungslos. Hat jemand eine Idee, was das sein könnte? Danke für jede Hilfe. Stefan Menten |
AW: Umstellung von Delphi 7 auf 2010
Ich hatte einmal Probleme bei Umstellung von D6 auf D2006. Dort fehlte im Projektfile irgendetwas. Aber genau weiß ich das nicht mehr. Kannst ja mal im Projektfile nachschauen, ob es so aussieht:
Delphi-Quellcode:
Meines Wissens fehlte da irgwendwie der Initialize Zweig. Vielleicht hilft das.
Application.Initialize;
................. Application.Run; |
AW: Umstellung von Delphi 7 auf 2010
Wäre sehr hilfreich, wenn du die Stellen mal posten würdest. Oder zumindest ein paar.
|
AW: Umstellung von Delphi 7 auf 2010
Bei D2009 kamen einige Unicode-Besonderheiten dazu und Records haben sich in der Größe geändert. Hast du mal in der Hilfe die Hinweise zur Umstellung angeschaut? Das würde erklären, warums im Speicher nicht so rund läuft...
|
AW: Umstellung von Delphi 7 auf 2010
Hallo zusammen,
danke für die Antworten. Hier erst mal der Quelltext des Projektes: <--
Delphi-Quellcode:
-->
begin
Application.Initialize; Application.CreateForm(TDM_AM, DM_AM); Application.CreateForm(TfrmMain, frmMain); Application.Run; end. Die erste Form ist ein Datenmodul, die zweite das Hauptfenster. Unter Delphi 2010 ist es nun so, das die beiden Formen nicht in der umgekehrten Reihenfolge zerstört werden, also zuerst frmMain, dann das Datenmodul, sondern zuerst das Datenmodul (oder auch parallel). Wenn ich dann in der Hauptform z.B. auf eine ADO-Verbindung auf dem Datenmodul zugreifen will, existiert das Objekt nicht mehr. Es ist aber auch nicht nil. <--
Delphi-Quellcode:
-->
qyLogged := TADOQuery.Create(nil);
qyLogged.Connection := DM_AM.ADOConnection; qyLogged.SQL.Text := 'Select * from xyz' // peng Das führt dann zu den Fehlern. Gruß Stefan |
AW: Umstellung von Delphi 7 auf 2010
Ich habe bei der Umstellung auch öfter mal Späne gehabt. Um die nicht sehr übersichtliche Unicode-Implementation auszuschließen, könnte ein cast in einen AnsiString als Prüfung dienen:
Zitat:
Grüße, Messie |
AW: Umstellung von Delphi 7 auf 2010
Hallo zusammen,
ich bin einen Schritt weiter. <--
Delphi-Quellcode:
-->
function SMMessageDlg(const sText, cText: AnsiString; aType: Cardinal): Word;
var pText, pCaption: PWideChar; begin try GetMem(pText, Length(sText)+1); GetMem(pCaption, Length(cText)+1); StrPCopy(pText, sText); StrPCopy(pCaption, cText); result := MessageBox(0, pText, pCaption, aType); finally FreeMem(pText, Length(sText)+1); FreeMem(pCaption, Length(cText)+1); end; end; Diese Funktion habe ich mir vor Jahren mal geschrieben um das Problem zu umgehen, dass die Standard-Dialoge von Delphi die Benutzeroberfläche von XP und Nachfolgern nicht unterstützte und die Buttons dann aussahen wie unter W9x. Ich habe die Funktion zwar angepasst (PWideChar und AnsiString), aber offensichtlich kommt der Fehler immer noch dadurch zustande. Kurrioserweise funktioniert die Funktion, die Fehler kommen erst hinterher. Any Idea? Gruß Stefan |
AW: Umstellung von Delphi 7 auf 2010
Ginge das nicht auch kurz und bündig?
Delphi-Quellcode:
function SMMessageDlg(const sText, cText: AnsiString; aType: Cardinal): Word;
begin Result := MessageBoxA(0, PAnsiChar(pText), PAnsiChar(pCaption), aType); end; |
AW: Umstellung von Delphi 7 auf 2010
Delphi-Quellcode:
Du holst Dir da Speicher für PWideChar von einem AnsiString. Du brauchst aber 2 Byte pro Zeichen.
GetMem(pText, Length(sText)+1);
GetMem(pCaption, Length(cText)+ Grüße, Messie |
AW: Umstellung von Delphi 7 auf 2010
@menten
PWideChar passt aber nicht zu AnsiString..... ansonsten schliesse ich mich DeddyH an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz