AGB  ·  Datenschutz  ·  Impressum  







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

Fehlersuche

Ein Thema von gangs-taas · begonnen am 7. Apr 2009 · letzter Beitrag vom 9. Apr 2009
Antwort Antwort
Seite 1 von 7  1 23     Letzte »    
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#1

Fehlersuche

  Alt 7. Apr 2009, 15:30
hey, ich habe versucht mir ein entschlüsselungsprogramm zu schreiben, wobei jeder buchstabe im verschlüsselten Text 'y' buchstaben hat. 'y' ist die erste Zahl in meinem EditFeld 1.
Wenn ich das Programm ausführe funktioniert es erst schon, aber wenn ic auf Button1 Klicke bekomme ich die Meldung
Zitat:
'' ist kein gültiger integer wert
ich weiß einfach nicht wo mein fehler ist ...
hier ist mein Code


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
String2 : string;
y : integer;
Schalter : integer;
begin
// Variablen Deklarieren //
String2 := Copy(Edit2.Text,1, Length(Edit2.Text));
y:= StrToInt(Copy(Edit1.Text,0,1));
Schalter := 0;
x := 1 ;
// Kontrollanzeige//
Edit3.Text := IntToStr(x);
Edit4.Text := IntToStr(y) ;
// String stückeln//
repeat
begin
  sTemp1:= Copy(String2, 1, y);
 case StrToInt(sTemp) of
 1234 : Memo1.Text := Pchar(Memo1.Text + 'a');
 5678 : Memo1.Text := Pchar(Memo1.Text + 'b');
  end;
  String2 := Copy(Edit2.Text,y, Length(Edit2.Text));
y := y+y ;
{Edit3.Text := IntToStr(x);
Edit4.Text := IntToStr(y) ; }

If (y >= (Length(Edit2.Text))) Then
Schalter := 1 ;
End;
until (schalter = 1) ;

end;

ps. Danke schonmal für eure Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.608 Beiträge
 
#2

Re: Fehlersuche

  Alt 7. Apr 2009, 15:37
Zitat von gangs-taas:
Delphi-Quellcode:
y:= StrToInt(Copy(Edit1.Text,0,1)); // wahrscheinlich hier...
// ...
 case StrToInt(sTemp) of // oder hier...
Die Fehlermeldung ist ganz klar: Es wird versucht, einen leeren String in eine Zahl umzuwandeln. Ein Leerer String ist aber keine gültige Zahl.

Also schau Dir mal ab, ob in Edit1 oder in dem temporären String nicht vielleicht nichts drin steht, was Du ungeprüft in eine Zahl umwandeln willst...
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Fehlersuche

  Alt 7. Apr 2009, 15:38
Irgendwo, wo du StrToInt() verwendest hast, wird ein Leerstring sein. Und das ergibt den Fehler.
Setze dir zu Beginn von der Prozedur einen Breakpoint, drücke F9 und klicke auf deinen Schalter. Danach gehst du Zeile für Zeile durch und schaust mal, was für Werte du so im einzelnen erhälst und siehst dann auch an welcher Stelle es hakt.
Und dann guckst du dir mal das hier durch.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Fehlersuche

  Alt 7. Apr 2009, 15:39
Was passiert, wenn Du
Zitat:
y:= StrToInt(Copy(Edit1.Text,0,1));
iny:= StrToInt(Copy(Edit1.Text,1,1)); änderst? Eine weitere Fehlerquelle wäre sTemp, aber da das anscheinend eine globale Variable ist, kann man im Code nicht sehen, was drinstehen könnte.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Fehlersuche

  Alt 7. Apr 2009, 15:45
Wäre
y:= StrToInt(Edit1.Text[1]); nicht etwas lesbarer? Es würde außerdem die Fehlerquellen minimieren.
Genauso kannst du Edit1.Text direkt String2 zuweisen.
String2 := Edit2.Text; Edit:
Das Beste wäre eine Eingangsprüfung auf Leerstrings. Oder TryStrToInt.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#6

Re: Fehlersuche

  Alt 7. Apr 2009, 15:47
Zitat von DeddyH:
Was passiert, wenn Du
Zitat:
y:= StrToInt(Copy(Edit1.Text,0,1));
iny:= StrToInt(Copy(Edit1.Text,1,1)); änderst? Eine weitere Fehlerquelle wäre sTemp, aber da das anscheinend eine globale Variable ist, kann man im Code nicht sehen, was drinstehen könnte.

okay
also das erste hat leider nichts gebracht ...


so und zu sTemp
das ist eine globale Variable, in der die ersten 'y' buchstaben von dem textfeld Edit2 stehen.
dann soll/wird überprüft ob das gleich einer von meinen verschlüsselten buchstaben ist....




Zitat von quendolineDD:
Irgendwo, wo du StrToInt() verwendest hast, wird ein Leerstring sein. Und das ergibt den Fehler.
Setze dir zu Beginn von der Prozedur einen Breakpoint, drücke F9 und klicke auf deinen Schalter. Danach gehst du Zeile für Zeile durch und schaust mal, was für Werte du so im einzelnen erhälst und siehst dann auch an welcher Stelle es hakt.
Und dann guckst du dir mal das hier durch.

also ich weiß leider nicht wie das mit dem breakpoint funktioniert aber ich werde mir gerne das Tutorial durchlesen und hoffe ich bin danach schlauer.

vielen dank für den link auf jedenfall !!



lg
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.608 Beiträge
 
#7

Re: Fehlersuche

  Alt 7. Apr 2009, 15:48
Zitat von quendolineDD:
Wäre
y:= StrToInt(Edit1.Text[1]); nicht etwas lesbarer? Es würde außerdem die Fehlerquellen minimieren.
Naja.. wenn ich 10 Eingebe erwarte ich dann nicht was anderes als wenn ich 1 eingebe?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#8

Re: Fehlersuche

  Alt 7. Apr 2009, 15:49
Zitat von quendolineDD:
Wäre
y:= StrToInt(Edit1.Text[1]); nicht etwas lesbarer? Es würde außerdem die Fehlerquellen minimieren.
Genauso kannst du Edit1.Text direkt String2 zuweisen.
String2 := Edit2.Text; Edit:
Das Beste wäre eine Eingangsprüfung auf Leerstrings. Oder TryStrToInt.

für das bin ich auch dankbar und werde es gleich umändern.

wobei der einwurf meines vorredners gut ist ... ich werde da nochmal drübernachdenken, denke aber, dass ich es so lassen werde wie es bislang ist, da ich das dann leichter auf 'die ersten 2 zahlen in dem Editfeld' umändern kann....

ich wusste nicht das String2 := Edit2.Text; so einfach funktioniert ... ich dachte ich bekomme dann wieder irgend ne blö** fehlermeldung ....


aber ich werde es jetzt mal ausprobieren
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Fehlersuche

  Alt 7. Apr 2009, 15:49
Zitat von Phoenix:
Zitat von quendolineDD:
Wäre
y:= StrToInt(Edit1.Text[1]); nicht etwas lesbarer? Es würde außerdem die Fehlerquellen minimieren.
Naja.. wenn ich 10 Eingebe erwarte ich dann nicht was anderes als wenn ich 1 eingebe?
Er hat aber auch nur eine Stelle kopiert
y:= StrToInt(Copy(Edit1.Text,0,1));
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Fehlersuche

  Alt 7. Apr 2009, 15:50
Naja, der Copy-Befehl nimmt aber auch nur ein Zeichen, so wie er da steht.

[edit] *gnarf* macht doch alleine weiter *püh* [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 7  1 23     Letzte »    


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 19:04 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