AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte XP Usermanagers 6.1 Open Source
Thema durchsuchen
Ansicht
Themen-Optionen

XP Usermanagers 6.1 Open Source

Ein Thema von Luckie · begonnen am 24. Okt 2004 · letzter Beitrag vom 4. Feb 2020
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.963 Beiträge
 
Delphi 12 Athens
 
#1

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 11:25
Der Fehler passiert in der Funktion "ImportXMLThread" und erstaunt mich insofern, als daß dort doch mit "try..finally" ihm entgegengewirkt wird.
Oh, böse.
Die Methode Import liefern zwar einen Boolean zurück, schmeißt aber bei Misserfolg eine Exception.
Da das eine Threadmethode ist, landet die dann direkt in den aufrufenden Windows-Routinen.

Bei der Konstellation macht es gar keinen Sinn eine Exception zu werfen. Dazu kommt, dass Exception.Create in Unit Exceptions inherited nicht aufruft und somit die Message der Exception noch dazu leer ist.

try..finally sorgt ja nur dafür, dass Import.Free noch ausgeführt wird, behandelt aber den Fehler nicht.

Und CoDOMDocument40.Create ist auch etwas veraltet, das gibt es auch neueren Systemen vermutlich gar nicht mehr.

Ich schaue mal sobald ich dazu komme. Sollte schnell gehen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 11:32
Der Fehler passiert in der Funktion "ImportXMLThread" und erstaunt mich insofern, als daß dort doch mit "try..finally" ihm entgegengewirkt wird.
Oh, böse.
Ich war jung und brauchte den Code.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.963 Beiträge
 
Delphi 12 Athens
 
#3

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 12:24
Ich war jung und brauchte den Code.
Och, das passiert öfter als du vielleicht denkst.
Und solange man dann in diesem Fall nicht eine solche Fehleingabe macht, merkt man es ja auch nicht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 12:46
Bei der Konstellation macht es gar keinen Sinn eine Exception zu werfen. Dazu kommt, dass Exception.Create in Unit Exceptions inherited nicht aufruft und somit die Message der Exception noch dazu leer ist.
Naja, ich glaubte bisher eigentlich, daß "try" einen solchen fehlerbedingten Programmabsturz zuverlässig bzw. immer verhindert.

Daß "except" im Fehlerfalle, und zwar unmittelbar danach, aktiv wird, ist klar.

Demnach hatte ich bisher bei "try...finally" eine solche Funktionalität im Hinterkopf, daß Fehler abgefangen, aber im Fehlerfalle (wird der Rest im try nach dem Fehler noch ausgeführt?) keine weitere Aktion erfolgt, danach aber in jedem Falle der Code im finally-Teil ausgeführt wird.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.963 Beiträge
 
Delphi 12 Athens
 
#5

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 13:05
Demnach hatte ich bisher bei "try...finally" eine solche Funktionalität im Hinterkopf, daß Fehler abgefangen, aber im Fehlerfalle (wird der Rest im try nach dem Fehler noch ausgeführt?) keine weitere Aktion erfolgt, danach aber in jedem Falle der Code im finally-Teil ausgeführt wird.
Beides macht das gleiche, wenn b mal angenommen eine Exception wirft und mal nicht:
Delphi-Quellcode:
a;
try
  b;
finally
  c;
end;

// und:
a;
try
  b;
  c;
except
  c;
  raise;
end;
In beiden Fällen wird c ausgeführt und der Fehler wieder geraised und somit weitergereicht. Finally bewirkt das nur automatisch.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 13:06
Mein Gedankengang war wohl, dass man auch nur vom Usermanger erstellte XML-Dateien importiert, deswegen habe ich die Fehlerbehandlung an dieser Stelle etwas vernachlässigt. Vielleicht wollte ich sie auch noch einbauen, habe es aber nur vergessen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.963 Beiträge
 
Delphi 12 Athens
 
#7

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 13:19
Mein Gedankengang war wohl, dass man auch nur vom Usermanger erstellte XML-Dateien importiert
Deshalb ist die Grundregel in der Qualitätssicherung:
Lass nie denjenigen testen, der es gebaut hat. Der macht es ohnehin so wie er es gebaut hat und kommt gar nicht auf andere "kreativere" Nutzungsmöglichkeiten.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 13:51
Das ist eigentlich wie beim Korrekturlesen von Texten: Die Fehler in den eigenen Texten findet man nicht.

Man liest das, von dem man meint, dass man es geschrieben habe und nicht das, was man tatsächlich geschrieben hat.

Zum Testen nehme man kreative Chaoten
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 15:27
Mein Gedankengang war wohl, dass man auch nur vom Usermanger erstellte XML-Dateien importiert, deswegen habe ich die Fehlerbehandlung an dieser Stelle etwas vernachlässigt. Vielleicht wollte ich sie auch noch einbauen, habe es aber nur vergessen.
Also, ich war zugegebenermaßen ein wenig "bösartiges Scriptkiddy". Kam auf die Idee, es mit einer veränderten XML-Datei zu versuchen. Kann ja auch durch einen Schreib-/Lesefehler evtl. passieren.

Parallel dazu wurde mir bewußt, auch meine Ini-Dateien in dieser Hinsicht abzusichern. Aber Pustekuchen, an ungültige Ini-Dateien komme ich mit try nicht heran.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#10

AW: XP Usermanagers 6.1 Open Source

  Alt 9. Aug 2017, 12:25
Hallo Luckie und die anderen Experten, bitte habt die Geduld mit mir, weil ich noch Fragen habe.

Die Nachrichtenschleife des XP Usermanagers ist nicht minimalistisch. Dort steht unter anderem:
Delphi-Quellcode:
Ret := GetMessage(msg, 0, 0, 0);
if Integer(Ret) = -1 then Ret := True; // -1 nur bei fehlerhaften Handles oder Pointern, kann das überhaupt passieren?
Es geht um die zweite Zeile, der Kommentar besagt schon die erste Frage: Ist das nur zur 100%igen Sicherheit, oder kann es auch bei regulärer Programmumgebung und -benutzung passieren, daß Getmessage einen Errorcode, also -1 zurückliefert.

Die zweite - kleine - Unklarheit ergibt sich durch die nächste Codezeile:

if (not Ret) then break; // nötig?

Auch hier sagt der Kommentar schon mein Anliegen. Denn auch ohne diese Zeile läßt sich nämlich das Programm mit Alt+F4, "Datei -> Beenden" und / oder Druck auf "x" beenden.

Danke für die Aufmerksamkeit und Geduld!

Gruß

Delphi-Laie

Geändert von Delphi-Laie ( 9. Aug 2017 um 13:57 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:57 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