Seite 3 von 6

Verfasst: 26.05.2007 21:33
von Kiffi
Falko hat geschrieben:Ein Leerstring sieht aber in Wirklichkeit so aus :lol:
hey Falko, Du verwechselst Leerstring mit Leerzeichen ;-)

Grüße ... Kiffi

Verfasst: 26.05.2007 21:40
von ts-soft
Kann man als Bug sehen, aber um diesen Bug zu bemerken bedarf es einen
Code, der auch einen Bug enthält, nämlich einen Leersting wo dieser nicht
erlaubt sein kann, weils keinen Sinn ergibt :lol:

Verfasst: 26.05.2007 21:42
von Falko
Oh man, richtig. Leerstring, da ist nix und Leerzeichen, da ist doch was,
also auch nix :mrgreen: .
Nee, ganz im Ernst, du hast schon Recht Kiffi :allright: .

Aber trotzdem sollte der Debugger was ausspucken.
Aber das ist dann so, wie ts-soft schon sagt, eine Endlosschleife, die
nie beendet wird.

Wir kennen ja noch das Beispiel mit For Next und Bytes über 127

Code: Alles auswählen

For i.b= 0 To 127
 Debug i
Next i
Das wäre genauso.

Gruß Falko

Verfasst: 26.05.2007 22:19
von AND51
Falko hat geschrieben:Aber trotzdem sollte der Debugger was ausspucken.
Nein eben nicht, oder gibst du deine PRogramme nur mit integriertem Debugger weiter?

Ich finde schon dass es auf jeden Fall auch ohne Debugger gehen muss!

Verfasst: 26.05.2007 22:25
von ts-soft
>> Ich finde schon dass es auf jeden Fall auch ohne Debugger gehen muss!
Das macht es ja im Moment, ergebnis ist eine Endlosschleife. Oder meinste
der Fehler soll ignoriert werden, Programm läuft weiter mit fehlerhaften
Daten und Nutzer merkt es hoffentlich nicht :lol:

Selbstverständlich sind solche Fehler zu beseitigen, Deine Aussage macht
nun gar keinen Sinn.

Verfasst: 26.05.2007 22:39
von String
Hallo ts-soft ich habe bei dir den Eindruck, du beschuldigst mich ein absoluter
Programmier Schlumpf zu sein.
Zitat: um diesen Bug zu bemerken bedarf es einen
Code, der auch einen Bug enthält
Zitat Ende
Warum kannst Du dir nicht vorstellen, dass man ein Programm entwickeln kann
In dem der Benutzer enorm viele Einstellungen vornehmen kann.
Die ein solches Problem verursachen können.
Wenn du ein Spitzen Programmierer bist (gehe ich mal von aus)
Solltest du das durchaus einsehen.

Verfasst: 26.05.2007 22:49
von Kaeru Gaman
das mag ja alles sein.
und es mag ja auch sein, dass es unschön/unpraktisch/fehlerhaft ist, wenn der befehl freezed.

aber:
wenn ich eine eingabe machen kann, dass versucht wird,
einen leerstring als suchstring zu benutzen,
dann müßte ich doch sowieso die rückgabe überprüfen,
ob eine veränderung stattgefunden hat.

stellt euch vor, ihr habt eine UNDO-funktion dabei,
soll die überschrieben werden, wenn keinerlei veränderung stattgefunden hat?
wieso sollte überhaupt eine Replace durchgeführt werden, wenn der suchstring leer ist?

also müßte ich das doch so oder so prüfen, damit das programm richtig funktoniert.
es dürfte so oder so der versuch, einen leeren suchstring zu benutzen,
nicht als durchgeführte operation angesehen werden.

wo sollte also der unterschied sein, ob ich es vorher prüfe, und dann das Replace garnicht erst aufrufe?

klar, dass der Befehl freezed mag ein fehler sein,
aber dass er überhaupt in die situation kommt, freezen zu können,
ist ein fehler des programmierers.

Verfasst: 26.05.2007 22:52
von Falko
Dann vergleicht doch das mal mit FindString. Dort wird kein Leerstring gefunden und das Programm wird auch korrekt beendet, was eben
beim Replacestring nicht passiert.
Der Gedanke hierzu ist, wenn ein Beispielstring z.B. Acht Buchstaben hat, sollten auch nur 8 Buchstaben verglichen werden. Dann muss auch Ende
sein. FindString ist quasi nicht viel anders oder was meint ihr dazu?

Code: Alles auswählen

;Suche hier nach Leerzeichen
Debug FindString("Purebasic 4.10", " ", 0)
;Und jetzt suche mal Leestrings
Debug FindString("Purebasic 4.10", "", 0)
;hier müssten dann Leerzeichen sein?
Debug FindString("        ", "", 0)
; und dies vielleicht ein Leestring?
Debug FindString("", "", 0)
Gruß Falko

Verfasst: 26.05.2007 22:52
von String
@Kaeru Gaman
OK Ich bin ein Schlumpf
Aber ich hab jetzt wenigstens meine ruhe. cu

Verfasst: 26.05.2007 22:53
von ts-soft
String hat geschrieben:Warum kannst Du dir nicht vorstellen, dass man ein Programm entwickeln kann In dem der Benutzer enorm viele Einstellungen vornehmen kann. Die ein solches Problem verursachen können.
Wie bereits mehrmals gesagt, ca 2 Drittel der Zeit der Programmentwicklung
steckt man durchschnittlich in die Fehlerbehandlung. Dazu gehört es auch,
nicht mögliche Eingaben des Benutzers zu behandeln. Bei falschem Code
hilft der Debugger, bei falschen Benutzereingaben ist es Deine Aufgabe.

Benutzereingaben sind grundsätzlich zu prüfen, bevor man sie
weiterverarbeitet. Entweder man verhindert Falscheingaben oder man prüft
sie.
Wenn Du jetzt der Meinung bist ein Schlumpf zu sein, kann ich es nicht ver-
hindern, ich habe damit aber nichts zu tun :lol: