![]() |
Exeption bei m:=inttostr(integer(mm))
Hi!
Ich habe wiedereinmal ein Problem. Und zwar folgendes: Ich will mir einen Erinnerer Bauen, habe aber ein Problem mit dieser Procedure:
Delphi-Quellcode:
Dort bleibt er mit ner Exeption bei "deli:=deli+' ';" stehen.
procedure TForm1.UppdateEvents;
var i,x:integer; deli:string; s:integer; a:string; begin Form1.Cursor:=crHourGlass; AllEvents:=LoadAllSimpleEvents; for i:=0 to High(AllEvents) do if IsInTime(20,AllEvents[i].Date) then begin for x:=1 to 21-Length(AllEvents[i].Title) do deli:=deli+' '; Listbox1.Items.Add(AllEvents[i].Title+deli+DateAsString(AllEvents[i].Date,'.')+' '+InXDays(AllEvents[i].Date)); deli:=''; end; Feiert:=TFeiertage.Create; Feiert.Jahr:=YearAsInteger(Date); Feiert.Land:=BB; for s:=trunc(Date-3) to trunc(Date+30) do begin DateAsString(s,'.',a); if Feiert.IstFeiertag(DayAsInteger(s),MonthAsInteger(s),YearAsInteger(s)) then Listbox1.Items.Add('Feiertag '+a+' '+InXDays(s)); end; Form1.Cursor:=crDefault; end; Manchmal aber auch in dieser Procedure:
Delphi-Quellcode:
Bei "m:=inttostr(integer(mm));".
function DateAsString( Dateintern:TDateTime;Delemiter:string):string;
var yy,mm,dd:Word; y,m,d:string; begin DecodeDate(Dateintern,yy,mm,dd); d:=inttostr(integer(dd)); m:=inttostr(integer(mm)); y:=inttostr(integer(yy)); result:=d+Delemiter+m+Delemiter+y; end; Und das lustigste ist: Ich benutze diese procedure (uppdateevents) ständig. Und beim Starten(er soll alles laden) funktioniert das auch. nur nicht wenn ich die aus Form2 anspreche(Main.uppdateevents;). Ich weis echt nicht was ich falsch mache... bitte helft mir! gruß Teekeks |
Re: Mysteriöses Problem bei procedure
:wiejetzt:
|
Re: Mysteriöses Problem bei procedure
Ich würde fast tippen, dass die Arraygrenzen bei der For-Schleife erreicht werden, mal so ins Blaue rein *g*
|
Re: Mysteriöses Problem bei procedure
Zitat:
Ich versteh den Fehler einfach nicht ^^ [edit]Hmmm. Das könnte sein. Muss ich mir mal angucken. ich hab bis jetzt noch nicht viel mit dynamischen arrays zutun gehabt... Ich suche dort mal... |
Re: Mysteriöses Problem bei procedure
könntest du bitte einen aussagekräftigen Titel verwenden der das Problem wenigstens ansatzweise beschreibt. Derzeit weiß man nur das es wohl um eine procedure geht aber wann geht es in Delphi mal nicht darum? :)
|
Re: Mysteriöses Problem bei procedure
Zitat:
|
Re: Mysteriöses Problem bei procedure
Ja. aber ich dachte "hmmm. ne procedure kommt vor und ich kann das problem nicht genau beschreiben weil ich es nicht verstehe. " Ich finde daher das der Titel aus meiner sicht passt :P Wäre schön wenn du mir einen anderen vorschlägst, mir fällt nichts anderes ein ^^
[roter kasten] Um genau zu sein um eine Procedure und um eine function ^^ |
Re: Mysteriöses Problem bei procedure
Das Problem ist einfach zu schwer einzugrenzen, da du's ziemlich verwaschen vorträgst. Dafür war das "Hä, wie jetzt". "Manchmal bleibt er da stehen, manchmal da" ... Dann bei 'ner String-Operation kommt 'ne Exception ... Hä? Grenze das Problem doch bitte mehr ein.
|
Re: Mysteriöses Problem bei procedure
mein Problem ist das ich das nicht kann. Ich mache mehrmals hintereinander das selbe und es Debugger sagt bei jedem mal das an einer stelle(immer eine der beiden) eine Exeption auftritt.
|
Re: Mysteriöses Problem bei procedure
Dann setzte Breakpoints und gehe schrittweise die beiden Funktionen durch oder verwende asserts um den Fehler einzugrenzen. Mabuse hat hier auch ein tolles
![]() |
Re: Mysteriöses Problem bei procedure
Danke für den Link. Soviele funktionen kannte ich noch nicht vom Debugger.
Also: es gibt in diesem Befehl (fürs debuggen n bissl anders Formatiert):
Delphi-Quellcode:
Bei
Listbox1.Items.Add(
AllEvents[i].Title+ deli+ DateAsString( AllEvents[i].Date,'.')+ ' '+ InXDays( AllEvents[i].Date)); deli:='';
Delphi-Quellcode:
eine Fehlermeldung die da lautet:"Project raised exeption class 'External: SIGSEGV'."
DateAsString(AllEvents[i].Date,'.')
|
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage |
Re: Mysteriöses Problem bei procedure
Wenn du tatsächlich ne externe Exception SIGSEGV bekommst, dann scheint dein Problem anderer Natur zu sein.
![]() Statt DateAsString(AllEvents[i].Date,'.') in den Parametern direkt zu verwenden, erstelle eine Hilfsvariable, der du den Wert zuweist. Setze da einen Breakpoint drauf und steppe da mit F7 bzw. F8 durch. |
Re: Mysteriöses Problem bei procedure
Wahrscheinlich wurden an anderer Stelle, durch Zugriffe auf ungültige Adressen, Daten des Speichermanagers zerschossen.
Unabhängig davon seh ich hier ein mögliches Speicherleck:
Delphi-Quellcode:
Falls diese Variable (z.B. bei einem zweiten Aufruf der Funktion) bereits auf ein Objektinstanze verweist.
Feiert:=TFeiertage.Create;
|
Re: Mysteriöses Problem bei procedure
Hi!
@Blup: Das war das erste Problem... @all: ich habe das Problem eingegrenzt. Aus welchen grund auch immer tritt diese Exeption bei "m:=imttostr(2);" auf. Ich verstehe einfach nicht warum der das nicht macht... :( Wisst ihr weiter? |
Re: Mysteriöses Problem bei procedure
Wenn du ein Formular TForm0815 hast, dann darf im gesamten Code die Klasse die (globale) Variable Form0815 nicht angesprochen werden.
Das kann man sich ruhig als goldene Regel an den Monitor kleben.
Delphi-Quellcode:
Also such mal deinen gesamten Sourcecode ab, ob du diese Regel noch an anderen Stellen verletzt hast.
procedure TForm1.UppdateEvents;
begin Form1.Cursor:=crHourGlass; // FALSCH !!! Cursor:=crHourGlass; // so wäre es richtig |
Re: Mysteriöses Problem bei procedure
sehr schön. Hab ich korrigiert. ABER: Der Debugger bleibt immernoch bei "m:=inttostr(integer(mm));" mit der Exeption stehen... :(
[edit]Ist der Titel jetzt besser? [/edit] |
Re: Exeption bei m:=inttostr(integer(mm))
Ein Problem eingrenzen heisst: Problemstelle isolieren -> Neues Projekt -> Problemstelle dort implementieren -> Testen.
Und ich bezweifel, dass du in einem neuen Projekt den Fehler bei "m := inttostr (2)" bekommst. Das heisst: Irgendwo hast du richtig Murks in deinem Programm. Etwa den Faden und Überblick verloren? ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 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