AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stack overflow

Ein Thema von gfaw · begonnen am 11. Jan 2003 · letzter Beitrag vom 21. Jan 2003
Antwort Antwort
Seite 1 von 2  1 2      
gfaw

Registriert seit: 10. Jan 2003
Ort: Baden - Baden
50 Beiträge
 
Delphi 7 Professional
 
#1

Stack overflow

  Alt 11. Jan 2003, 15:09
Hi,

ich habe nun meine Applikation, die mit Delphi6 fehlerfrei lief, auf Version 7 portiert und umgewandelt (ohne Änderungen). Danach kommt es zu einem Stack overflow, wenn das Pogramm aufgerufen wird.

Ich habe danach Sharemem durch FastShareMem ausgetauscht und keine Änderung.

Hat jemand eine Idee, wie ich dies beseitige ?

Ciao

Alf
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 11. Jan 2003, 15:12
Moin Alf,

hast Du denn mal geprüft, an welcher Stelle der Stack Overflow auftritt?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
gfaw

Registriert seit: 10. Jan 2003
Ort: Baden - Baden
50 Beiträge
 
Delphi 7 Professional
 
#3
  Alt 11. Jan 2003, 17:52
Tach auch,

schau mal in Deine Mailbox. Ich habe Dir das programm mal zugeschickt. Kannst Du herausfinden, warum es abstürzt. Ich habe leider nur wenig Erfahrung mit Delphi, machen sonst nur Java .....


Mille gracie

Alf
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 11. Jan 2003, 19:55
Moin Alf,

würde ich ja prinzipiell gerne machen, aber wie Du meinem Profil entnehmen kannst (schau mal links von dieser Antwort), habe ich D5 und kein D7. Da wird's mit dem Test eines Programmes, das unter D6 läuft, aber nicht unter D7 etwas schwierig
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
gfaw

Registriert seit: 10. Jan 2003
Ort: Baden - Baden
50 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 11. Jan 2003, 20:23
Hi Christian,

schönen Gruß an die Waterkant. Hier im Südwesten schneit es gerade. Ich habe inzwischen den Debugger eingesetzt und habe die Stelle entdeckt, wo es zur einer "Speicherschutzverletzung" kommt. Der Debugger bleibt dann an der ersten Stelle der folgende Funktion stehen :


Delphi-Quellcode:
const
  EXPIRATION_DATE = '31.12.2004';

begin
  Application.Initialize;
  if now>StrToDate(EXPIRATION_DATE) then begin
    MessageDlg('Dieses Programm ist nur bis zum '+EXPIRATION_DATE+' lauffähig.'+#13+#10+
               'Bitte wenden Sie sich an lohn-ag.de, um ein Update zu erhalten!',
               mtError,[mbOK],0);
    Application.Terminate;
  end;
  if now>StrToDate(EXPIRATION_DATE)-14.0 then begin
    MessageDlg('Achtung, dieses Programm ist nur bis zum '+EXPIRATION_DATE+' lauffähig.'+#13+#10+
               'Bitte wenden Sie sich rechtzeitig an lohn-ag.de, um ein Update zu erhalten!',
               mtInformation,[mbOK],0);
  end;
  Application.Title := 'ZEIT@LOHN';
  Application.CreateForm(TfmMain, fmMain);
  Application.CreateForm(TfmKonfiguration, fmKonfiguration);
  Application.CreateForm(TfmMandant, fmMandant);
  Application.CreateForm(TfmSelectMitarbeiter, fmSelectMitarbeiter);
  Application.CreateForm(TqrStammdaten, qrStammdaten);
  Application.Run;
end.
Ich könnte natürlich den Quatsch abklemmen, aber ein Chef ist dann sehr böse. Ist dort etwas erkennbar ?

Ciao

Alf


[edit=Admin]Code-Tags eingefügt und Doppelposting entfernt. Mfg. Daniel[/edit]
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 11. Jan 2003, 20:33
Moin Alf,

hab' ich das richtig verstanden?
Bleibt das Programm schon bei Application.Initialize hängen?

BTW: Ein Posting reicht
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#7
  Alt 11. Jan 2003, 20:36
Hi gfaw,

ich habe zwar kein Delphi 7, aber der Code, den du gepostet hast, kann eigentlich gar nicht einen Stack Overflow auslösen, weil nichts auf den Stack gelegt wird. Dies könnte höchstens beim Erstellen der Forms passieren, aber soweit ich weiß, werden Objekte auf den Heap gelegt (der Stack wäre auch ein seltsamer Aufbewahrungsort). Der Debugger bleibt jedoch bei einer CreateForm()-Zeile stehen, wenn im OnCreate-Ereignis des Formulars eine Exception ausgelöst wird. Wenn der Debugger an einer solchen Zeile stehenbleibt, poste doch einmal den Code in der OnCreate-Routine.

[edit]Ich brauche zu lange zum Tippen... Wie auch immer, was mir gerade eingefallen ist: vielleicht ist die Stackgröße unter Delphi 7 standardmäßig kleiner gestellt als unter Delphi 6, schau mal in den Projektoptionen nach und vergrößere den Stack gegebenenfalls.[/edit]

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
gfaw

Registriert seit: 10. Jan 2003
Ort: Baden - Baden
50 Beiträge
 
Delphi 7 Professional
 
#8
  Alt 11. Jan 2003, 21:17
Hallo, d3g,

die max. Stackgröße habe ich auf $01000000 gestellt (das entspricht 16777216 und ist die maximale Größe lt. Hilfe). Dennoch kommt das Problem; ich denke in einem Sub-Modul. Any idea ????

Ciao

Alf
  Mit Zitat antworten Zitat
gfaw

Registriert seit: 10. Jan 2003
Ort: Baden - Baden
50 Beiträge
 
Delphi 7 Professional
 
#9
  Alt 11. Jan 2003, 22:26
Hi all,

ich habe nun das ganze Programm im Debugger und erhalten nun endlich eine Meldung, die uns vielleicht weiterhilft:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt ZEIT_LOHN.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00006E69. Lesen von Adresse 00006E69'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

Sagt dies jemand etwas ?

Ciao

Alf
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 11. Jan 2003, 22:44
Moin Alf,

die Adresse liegt ja noch vor der Anwendung. Heap oder Stack.
Und der Fehler kommt auf exakt dem gleichen Rechner mit einer unter D6 kompilierten Version nicht?

Ist das eine Standalone EXE oder hängen da z.B. noch eigene DLLs o.ä. dran?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz