AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren

Ein Thema von FarAndBeyond · begonnen am 23. Jun 2015 · letzter Beitrag vom 19. Jul 2016
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

AW: Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren

  Alt 17. Jul 2016, 18:54
Ja, sagtest du schon.. aber unter D7 geht das bei EnumWindows nicht ohne "Incompatible Types"-Fehler, bei anderen API's dagegen schon (z.B. "GetClassName"). Ist aber auch für dieses TinyTool nicht logisch. Wenn ich auf etwas prüfe, dann macht das ja wohl nur Sinn, wenn ich bei Negativ-Prüfung etwas anderes machen möchte oder anzubieten habe. In diesem Fall hab' ich nichts anzubieten und müßte das Programm schließen. Aber auch das ist quatsch, da sich das Programm ja binnen Sekundenbruchteilen selber schließt...
Deswegen sehe ich den Nutzen hier nicht... den ZusatzCode kann ich mir sparen...

Wobei ich ja gut finde, dass die API keine Exception wirft, aber ich kann nicht beurteilen ob das absolut in jedem Fall so ist und ich kann ebenfalls keine Performance-Nachteile erkennen, die durch TryExceptEnd entstehen. Geht mit und ohne brutal schnell... wo ist also der Nachteil? Sollte etwas außerhalb der API's schief gehen, dann hab' ich's abgefangen...
Klar, wenn du eh keine Sinnvolle Aktion im Fehlerfall ausführen kannst, dann brauchst du natürlich nicht jeden API Call prüfen.

Warum weglassen? Ist für ein kleines Projekt vielleicht halb so wild, aber je größer es wird, desto mehr sollte man Wurschtel-Code und unnötige Blöcke vermeiden. Vor allem kann ja zwischen den API Aufrufen wirklich nichts fehlschlagen. Ich glaube du hast so bisschen die Vorstellung, dass einfach mal "zufällig" durch den Maschinencode irgendwo Exceptions fliegen können. Das ist aber nicht der Fall.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
FarAndBeyond
(Gast)

n/a Beiträge
 
#2

AW: Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren

  Alt 17. Jul 2016, 23:02
Zitat:
Ich glaube du hast so bisschen die Vorstellung, dass einfach mal "zufällig" durch den Maschinencode irgendwo Exceptions fliegen können. Das ist aber nicht der Fall.
Na das klingt doch gut... Ich denke mein Programm sitzt auf 'nem OS mit möglicherweise mehr als 50 Mio Zeilen Code und es laufen Prozesse, Dienste, Treiber und andere Programme und ich kann nicht so recht einschätzen was da wann und wo mit welcher Programm-Konstellation so alles passieren kann...
Wobei dann wahrscheinlich in so einem Fall mein TryExceptEnd auch nichts nutzt...

Sicher eine einfache Exception ist kein Problem, ein Teil des Programms funktioniert nicht mehr oder etwas kann nicht ausgeführt werden, aber das Programm läuft weiter... aber woher weiß ich das so genau. Deswegen gehe ich meistens vom WorstCase-Fall aus und schaue mal ob ich noch was anzubieten habe. TryExceptEnd ist quasi ein Ausschlußprinzip: Ich hab' dann alles gemacht was ich tun kann...

Ich hab' letztens bei einem Fremdprogramm etwas speichern wollen und es ging nicht. Da gibt das Programm 'ne Meldung aus in der steht "I/O ERROR 103".
Also auf sowas steh' ich einfach nicht! Das ich nicht speichern konnte hab' ich ja gemerkt, denn ich war ja dabei als nichts abgespeichert wurde... wozu also die Meldung und "103" ist natürlich enorm hilfreich... da weiß ich doch gleich was Sache ist...

Deswegen nehme ich lieber einen ErrorLog und schreibe dort alles rein... solange das sinnvoll ist, je größer das Programm, desto mehr Meldungsfenster braucht man natürlich... ganz besonders bei mehreren Auswahlmöglichkeiten.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren

  Alt 18. Jul 2016, 12:54
Da macht es aber mehr Sinn die Exceptions zentral abzufangen, mit Application.OnException z.B.:
http://docwiki.embarcadero.com/CodeE...ption_(Delphi)

try..except benutzen wir nur, wenn wir an der Stelle diese Exception auch behandeln können und wollen. Andernfalls landet es im zentralen Exceptionhandler, der loggt, ggf. die Anwendung beendet usw.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
FarAndBeyond
(Gast)

n/a Beiträge
 
#4

AW: Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren

  Alt 18. Jul 2016, 23:01
Zitat:
..Da macht es aber mehr Sinn die Exceptions zentral abzufangen, mit Application.OnException...
Danke für den Tipp, das schau' ich mir mal an...

Wobei die Frage ist, ob man damit präzise Informationen bekommen kann über die Procedure bzw. Function in der der Fehler entstanden ist.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren

  Alt 19. Jul 2016, 04:05
Du kannst dir z.B. mit den Jedis einen Stacktrace erstellen. Genau gesagt mit der Unit JclDebug.
In aktuellen Delphiversionen kannst du diese direkt als Stacktrace Ersteller registrieren, aber ich weiß nicht seit wann das geht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 22:38 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