AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Stack Overflow ohne Ereignis

Ein Thema von Coder1990 · begonnen am 1. Jun 2008 · letzter Beitrag vom 1. Jun 2008
Antwort Antwort
Benutzerbild von Coder1990
Coder1990

Registriert seit: 3. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#1

Stack Overflow ohne Ereignis

  Alt 1. Jun 2008, 16:16
Seas,

folgendes:
Delphi-Quellcode:
procedure TMain.SaveFileAs1Click(Sender: TObject);
var
f: file of tcodepassword;
temp:tcodepassword;
i:integer;
begin
if SD.Execute then begin
current:=sd.FileName;
assignfile(f,sd.FileName);
rewrite(f);

for i:=1 to LBPW.Count do begin
temp:=codec(data[i]);
Write(f,temp);
end;
closefile(f);
               end;
end;
bei aufruf dieser procedure wird noch vor dem aufrufen von sd (savedialog) ein stack overflow gemeldet...
beim weglassen des inhalts der for schleife passiert dies aber nicht... warum?
p.s. die function codec erzeugt keinen overflow, sie basiert maximal auf for schleifen...
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Stack Overflow ohne Ereignis

  Alt 1. Jun 2008, 16:37
Ich schätze mal, dass temp zu viel Platz einnimmt (es wird wegoptimiert, wenn du es nicht verwendest). Wie sieht die Deklaration von tcodepassword aus?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Coder1990
Coder1990

Registriert seit: 3. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Stack Overflow ohne Ereignis

  Alt 1. Jun 2008, 16:40
Delphi-Quellcode:
type tcodepassword = record
bla1:string[100];
bla2: string[100];
bla3: string[100];
bla4: array[1..100] of string [100];
bla5: array[1..100] of array[1..100] of string[100];
bla6: array[1..100] of string[100];
end;
ok hat sich wohl erledigt... ich kürze einfach die arrays und die maximale länge der strings danke
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Stack Overflow ohne Ereignis

  Alt 1. Jun 2008, 16:53
Ich glaube, dass du in jedem Fall auf dynamische Arrays umsteigen solltest. Diese Deklaration ist mir ziemlich suspekt.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Stack Overflow ohne Ereignis

  Alt 1. Jun 2008, 17:55
bla5: array[1..100] of array[1..100] of string[100] Allein dieser Teil benötigt 1 MB auf dem Stack (Ab D2008 mit Unicodestrings 2 MB).
Und da tcodepassword auf dem Stack abgelegt wird, wird die defaultgröße des Stacks nicht ausreichen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:52 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