Entwickler-Ecke
Sonstiges (Delphi) - "Falscher Parameter" Meldung abschalten
fuggaz - Fr 20.03.09 21:53
Titel: "Falscher Parameter" Meldung abschalten
Hallo,
Ich habe das Problem, dass Delphi nicht meine except-Anweisung ausführt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| bmp.width:=-1; try str_uebersicht.Canvas.CopyRect(RectBmp,Bmp.Canvas,rect(0,0,Bmp.Width-1,Bmp.Height-1)); except ShowMessage('fehlermeldung'); end; |
Es gibt seine eigene Fehlermeldung aus:
"Falscher Parameter"
Wie kann ich das unterbinden?
(Es passiert auch unabhängig von der IDE)
jaenicke - Fr 20.03.09 22:09
Eine Fehlermeldung zu unterbinden ist ja wohl kaum der richtige Weg...
Finde doch lieber heraus warum an der Stelle überhaupt ein Fehler kommt. Bist du sicher, dass das da passiert? Der Quelltext sieht soweit eigentlich normal aus.
Mögliche Fehlerquellen gibt es viele:
- Deine Bmp oder str_uebersicht sind aus einem Grund selbst fehlerhaft.
- Der Quelltext oder ein anderer Quelltext in dem Zusammenhang wird in einem Thread aufgerufen
- Irgendwo wird falscher Speicher überschrieben
Und noch viele mehr. Aber das lässt sich durch Debugging ja herausfinden.
Delete - Fr 20.03.09 22:31
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| bmp.width:=-1; try str_uebersicht.Canvas.CopyRect(RectBmp,Bmp.Canvas,rect(0,0,Bmp.Width-1,Bmp.Height-1)); except on E:Exception do ShowMessage(E.Message); end; |
Eine nichts sagende Fehlermeldung ist sowieso meinst wenig hilfreich. Daher hat dir die Fehlermeldung von Delphi wesentlich weitergeholfen als dein "Fehlermeldung".
Flamefire - Sa 21.03.09 11:20
das was ich sehe ist:
bmp.width:=-1;
du setzt also seine bitmap auf eine negative breite???
wenn dort noch kein fehler kommt, dann spätestens beim versuch ein rechteck, dass von 0 bis -2 geht aus der bmp zu kopieren
andre mögliche stelle: der fehler kommt schon beim versuch der typconvertierung in ein rechteck:
Delphi-Quelltext
1:
| rect(0,0,Bmp.Width-1,Bmp.Height-1) |
jaenicke - Sa 21.03.09 15:17
Das hatte ich auch gedacht, aber ich hatte es ausprobiert. Der Code ist bei mir mit Delphi 2006 ohne Fehler durchgelaufen. :nixweiss:
Sinn macht es natürlich trotzdem keinen.
ffgorcky - Sa 21.03.09 21:52
Dort steht doch keine Zuweisung in Form von bmp.width:=-1
sondern er kopiert doch (fast) das gesamte Bitmap - nur ohne die äußerst rechten und unteren Pixel.
Oder verstehe ich das jetzt gerade verkehrt?
jaenicke - Sa 21.03.09 21:55
ffgorcky hat folgendes geschrieben : |
| Dort steht doch keine Zuweisung in Form von bmp.width:=-1 |
:gruebel:
fuggaz hat folgendes geschrieben : |
Ich habe das Problem, dass Delphi nicht meine except-Anweisung ausführt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| bmp.width:=-1; try str_uebersicht.Canvas.CopyRect(RectBmp,Bmp.Canvas,rect(0,0,Bmp.Width-1,Bmp.Height-1)); except ShowMessage('fehlermeldung'); end; | |
ffgorcky - Sa 21.03.09 21:59
Ach ja! Stimmt ja!
Das habe ich doch glatt übersprungen beim lesen und mich nur um das CopyRect gekümmert... :-(
fuggaz - So 22.03.09 11:09
Also, es ist so:
Eben weil die Delphi-Fehlermeldung relativ nichtssagend ist, wollte ich mir eine Fehlermeldung einbauen:
"In Prozedur soundso ist der und der Fehler aufgetreten"
Dann weiß ich direkt in welcher Prozedur das auftritt.
Und Fehler zu vermeiden ist ja logischerweise das Hauptziel, aber man kann ja nicht davon ausgehen, dass ein Programm fehlerfrei ist.
Deshalb möchte ich das gerne einbauen.
Und die Weite setze ich deshalb auf -1, um den Fehler zu simulieren.
| Zitat: |
Das hatte ich auch gedacht, aber ich hatte es ausprobiert. Der Code ist bei mir mit Delphi 2006 ohne Fehler durchgelaufen.
|
Das finde ich interessant^^
jaenicke - So 22.03.09 14:59
fuggaz hat folgendes geschrieben : |
| Und die Weite setze ich deshalb auf -1, um den Fehler zu simulieren. |
Füge an solche Stellen am besten immer einen Todo-Eintrag oder eine Ausgabe ins Compilerlog hinzu. Sonst vergisst du sowas am Ende noch im fertigen Programm. ;-)
Delphi-Quelltext
1: 2:
| {$MESSAGE warn 'Wenn fertig diesen Code zur Fehlerprovokation entfernen!'} |
Die Todo-Einträge kannst du unter Ansicht --> To-Do Liste anschauen, den Warnhinweis siehst du als Warnung in der Compilerausgabe.
fuggaz hat folgendes geschrieben : |
| Zitat: |
Das hatte ich auch gedacht, aber ich hatte es ausprobiert. Der Code ist bei mir mit Delphi 2006 ohne Fehler durchgelaufen.
|
Das finde ich interessant^^ |
Wenn das bei dir einen Fehler auslöst, dann ist das wohl vom Compiler oder Betriebssystem abhängig. Bei mir kommt jedenfalls mit Delphi 2006 und Vista kein Fehler. :mrgreen:
fuggaz - So 22.03.09 16:10
Ich hab das Problem gefunden.
Die Fehlermeldung kommt bei mir schon wenn ich bmp.width auf -1 setze.
Deshalb kommt Delphi natürlich erst gar nicht in meinen except-Teil.
Dann kann ich wohl davon ausgehen, dass es irgendwoanders abstürzen wird.(was ich nicht hoffen will^^).
Trotzdem interessant, dass es bei neueren Version klappt.
Danke für eure Antworten:-)
Edit:
Achso, To-Do Liste gibt es bei mir nicht.
Benutze Delphi7.
Dafür hab ich Notepad^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!