Delphi-PRAXiS
Seite 2 von 7     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehlersuche (https://www.delphipraxis.net/132179-fehlersuche.html)

Phoenix 7. Apr 2009 15:54

Re: Fehlersuche
 
Zitat:

Zitat von quendolineDD
Er hat aber auch nur eine Stelle kopiert
Delphi-Quellcode:
y:= StrToInt(Copy(Edit1.Text,0,1));

Ja. Das schon. Stellt sich die Frage, ob das überhaupt korrekt ist, bzw. ob es nicht besser wäre, gleich mit anderen Controls eine fehlerhafte / andere als die erwartete Eingabe zu verhindern.

quendolineDD 7. Apr 2009 15:55

Re: Fehlersuche
 
Das wäre aber ein logischer Fehler und uns nicht ersichtlich.
Dann könnten wir ihm aber auch gleich eine performante endgültige Lösung hinkauen ...

gangs-taas 7. Apr 2009 15:57

Re: Fehlersuche
 
xD
das fänd ich zwar auch nicth schlecht ich würde aber lieber verstehen wo mein fehler ist ^^

DeddyH 7. Apr 2009 16:03

Re: Fehlersuche
 
Dann setz doch einen Haltepunkt, steppe mit F8 durch und schau, wo es knallt.

nahpets 7. Apr 2009 16:15

Re: Fehlersuche
 
Hallo,

das kann nicht gehen:
Delphi-Quellcode:
y:= StrToInt(Copy(Edit1.Text,0,1));
Ein String fängt bei 1 an und nicht bei 0 (bzw. in Pascal steht/stand im nullten Byte die Länge des Strings, das ist hier aber sicherlich nicht der gewünschte Wert).
Vorschlag:
Delphi-Quellcode:
y:= StrToIntDef(Copy(Trim(Edit1.Text),1,1),1);
Zuerst mal alle Leerzeichen wegwerfen (Trim).
Vom Rest das erste Zeichen nehmen (Copy 1,1).
Wenn das schief geht wird eine 1 geliefert (StrToIntDef)
Der Vorgabewert kann natürlich geändert werden.

Am Besten am Anfang von Button1Click eine Fehlerprüfung einbauen:
Delphi-Quellcode:
Edit1.Text := Trim(Edit1.Text);
If Edit1.Text = '' then begin
  ShowMessage('Bitte irgendwas in Edit1.Text eingeben.');
  Exit;
end;
If StrToIntDef(Edit1.Text,-99) = -99 then begin
  ShowMessage('Bitte eine Zahl in Edit1.Text eingeben.');
  Exit;
end;
Alternativ statt TEdit ein TMaskEdit benutzen, das kann so konfiguriert werden, dass nur Zahlen eingegeben werden können. Spart den Ärger mit nicht in Zahlen umzuwandelnde Zeichen, die Prüfung auf Leerstring sollte aber auch bei TMaskEdit erfolgen.

Warum
Delphi-Quellcode:
Memo1.Text := Pchar(Memo1.Text + 'a');
Delphi-Quellcode:
Memo1.Text := Memo1.Text + 'a';
reicht vollkommen aus.

gangs-taas 7. Apr 2009 16:20

Re: Fehlersuche
 
ich bekomme es nicht hin mit dem Breakpunkt...
auch nicht mit Tutorial ....


ich werde mein Fehlerhaftes Programm jetzt als Selbstentpackendes Archiv (deswegen .exe) hochladen und hoffe ihr findet den fehler ...

Phoenix 7. Apr 2009 16:24

Re: Fehlersuche
 
Zitat:

Zitat von gangs-taas
ich bekomme es nicht hin mit dem Breakpunkt...
auch nicht mit Tutorial ....

Wieso denn nicht?
EInen Breakpoint setzt man mit F5. Das Programm ganz normal mit F9 laufen lassen und wenn der Code dann die Stelle mit dem Haltepunkt kommt hält es an. Mit F7 kann man in eine Funktion / Prozedur hineinspringen und mit F8 kann man die markierte Zeile ausführen ohne hineinzuspringen.

Mit der Maus auf Variablen zeigen zeigt den Wert dieser Variablen an. Das sollte doch ausreichen für den Anfang. Wo klemmt es denn?

gangs-taas 7. Apr 2009 16:28

Re: Fehlersuche
 
es klemmt da, dass ich nur eine procedur habe und das ist der klick auf den button. Aber sofort wenn ich auf ihn klicke
/egal ob mit oder ohne Breakpoint) krieg ich diese fehlermeldung mit einer CPU stelle mit der ich rein garnichts anfangen kann, da ich keine arnung habe was die jetzt besagt ...


CPU-Wert ist
Zitat:

763342EB C9 leave

Phoenix 7. Apr 2009 16:31

Re: Fehlersuche
 
Dann setz den Breakpoint doch gleich mal auf die erste Zeile dieser Prozedur nach dem begin.
Dann hält die an, bevor Du in den Fehler läufst.

gangs-taas 7. Apr 2009 16:34

Re: Fehlersuche
 
hab ich

der hält erst an wenn ich die fehlermedung bekomme und der Aufruf-Stack sagt
Zitat:

auf den Prozess kann nicht zugegriffen werden


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:00 Uhr.
Seite 2 von 7     12 34     Letzte »    

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