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      
nahpets
(Gast)

n/a Beiträge
 
#1

AW: XP Usermanagers 6.1 Open Source

  Alt 7. Aug 2017, 18:15
Schau bitte mal alle eingebundenen Units durch, ob da irgendwo ein {$D-} zu finden ist, dann werden dort die Debuginfos wieder ausgeschaltet.

Ist ein leidiges Problem, das ich von Delphi 7 kenne.
  Mit Zitat antworten Zitat
Delphi-Laie

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

AW: XP Usermanagers 6.1 Open Source

  Alt 7. Aug 2017, 18:25
Schau bitte mal alle eingebundenen Units durch, ob da irgendwo ein {$D-} zu finden ist, dann werden dort die Debuginfos wieder ausgeschaltet.

Ist ein leidiges Problem, das ich von Delphi 7 kenne.
Danke, Stephan!

Das war es zwar auch nicht, aber Du brachtest mich auf die richtige Fährte: Es liegt an der eingebundenen bzw. konkret aufgerufenen

{$I CompilerSwitches.inc}

Diese entfernt bzw. auskommentiert, und schon sind die Haltepunkte da!
  Mit Zitat antworten Zitat
Delphi-Laie

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

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 09:11
So, einen ersten kleinen Fehler habe ich entdeckt. Klein bezieht sich nicht auf seine Folge - immerhin beendet sich das Programm dann selbst bzw. wird von Windows beendet, allerdings ohne weiteren Schaden - sondern die Wahrscheinlichkeit seines Auftretens.

Wird dem Programm unter Extras -> Benutzer importieren eine ungültige XML-Datei angeboten, endet das Programm mit "Usermanager.exe hat ein Problem festgestellt und muss beendet werden." und danach mit "Exception Exception in Modul Usermanager.exe bei 0001BB90". Das passiert, wenn das Programm separat gestartet wird. Wird es aus der IDE heraus gestartet, kommt hingegen "Runtime Error 217 at 00011F07".

Der Fehler passiert in der Funktion "ImportXMLThread" und erstaunt mich insofern, als daß dort doch mit "try..finally" ihm entgegengewirkt wird.

Lange Rede, diesen try-Block mit einem weiteren try..except umhüllt, also
Delphi-Quellcode:
function ImportXMLThread(p: Pointer): Integer;
var
  ImPort : TImport;
  Filename : WideString;
begin

try
  Filename := PThreadParams(p)^.Filename;
  Import := TImport.Create(CurComputer, Filename);
  try
    if not Import.Import then
    begin
      SetCursor(LoadCursor(0, IDC_ARROW));
      case MessageBox(hApp, PChar(Format(rsImportError, [ExtractFilepath(ParamStr(0)) + LOGFILE])), PChar(APPNAME),
        MB_ICONWARNING or MB_YESNO) of
        IDYES: ShellExecute(hApp, 'open', PChar(ExtractFilepath(ParamStr(0)) + LOGFILE), nil, nil, SW_NORMAL)
      end;
    end;
  finally
    Import.Free;
  end;
except
//ggf. eine gewünschte Fehlerausgabe
end;

Result := 0;
end;
, und schon läuft auch das reibungslos.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 09:53
Du könntest ein Pull/Merge-Request auf GitHub erstellen damit Sebastian das einpflegen kann.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 10:03
Die CompilerSwitches.inc ist da drin, weil ich den Kommandozeilencompiler für die Batch nutze. Aber deines Debugging-Problems war ich jetzt auch etwas ratlos.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Delphi-Laie

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

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 11:54
Du könntest ein Pull/Merge-Request auf GitHub erstellen damit Sebastian das einpflegen kann.
Warum einfach, wenn es auch ganz "hochoffiziell" möglich ist?

In meinen Augen gehört das eher zur Rubrik "issues". Ist jetzt jedenfalls dort als solcher auf höchst "intermediate English" eingetragen.

Danke für den Hinweis!

Geändert von Delphi-Laie ( 8. Aug 2017 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

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
 
#8

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.929 Beiträge
 
Delphi 12 Athens
 
#9

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
 
#10

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