AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TJumpList ist recht eigenwillig

Ein Thema von Ydobon · begonnen am 26. Aug 2023 · letzter Beitrag vom 31. Aug 2023
Antwort Antwort
Seite 1 von 2  1 2      
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: TJumpList ist recht eigenwillig

  Alt 27. Aug 2023, 07:31
Danke für die Mühe, aber wie gehabt, bestenfalls die Erwähnung eines Fehlers ohne Gründe oder gar Lösungsmöglichkeiten.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: TJumpList ist recht eigenwillig

  Alt 28. Aug 2023, 11:30
Hast du einen Stacktrace zu einem solchen Fehler?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TJumpList ist recht eigenwillig

  Alt 28. Aug 2023, 18:16
So etwas?

[00A43822] Vcl.JumpList.TCustomJumpList.CheckUpdateError (Line 906, "Vcl.JumpList.pas" + 8) + $36
[00A43AE1] Vcl.JumpList.TCustomJumpList.UpdateList (Line 960, "Vcl.JumpList.pas" + 45) + $23
[00A4299A] Vcl.JumpList.TCustomJumpList.DoAutoRefresh (Line 545, "Vcl.JumpList.pas" + 1) + $0
[00A42E38] Vcl.JumpList.TCustomJumpList.OnListChange (Line 657, "Vcl.JumpList.pas" + 0) + $0
[00A422CE] Vcl.JumpList.TJumpCategories.Update (Line 371, "Vcl.JumpList.pas" + 3) + $5
[008CE0CB] System.Classes.TCollectionItem.Changed (Line 6193, "System.Classes.pas" + 3) + $4
[00A41CAA] Vcl.JumpList.TJumpCategoryItem.OnItemsChange (Line 207, "Vcl.JumpList.pas" + 0) + $2
[00A4243E] Vcl.JumpList.TJumpListCollection.Update (Line 416, "Vcl.JumpList.pas" + 3) + $5
[008CE426] System.Classes.TCollection.Changed (Line 6325, "System.Classes.pas" + 0) + $A
[008CE7EA] System.Classes.TCollection.InsertItem (Line 6458, "System.Classes.pas" + 8) + $2
[008CE1E4] System.Classes.TCollectionItem.SetCollection (Line 6227, "System.Classes.pas" + 4) + $8
[008CE054] System.Classes.TCollectionItem.Create (Line 6170, "System.Classes.pas" + 1) + $6
[00A41D32] Vcl.JumpList.TJumpListItem.Create (Line 241, "Vcl.JumpList.pas" + 1) + $6
[008CE333] System.Classes.TCollection.Add (Line 6292, "System.Classes.pas" + 1) + $7
[00A49933] Unit1.TForm1.UndAb (Line 283, "Unit1.pas" + 12) + $19
[00A4B863] Unit1.TForm1.FormCreate (Line 614, "Unit1.pas" + 7) + $3
[009FAD09] Vcl.Forms.TCustomForm.DoCreate (Line 4160, "Vcl.Forms.pas" + 3) + $C
[009FA8E4] Vcl.Forms.TCustomForm.AfterConstruction (Line 4043, "Vcl.Forms.pas" + 1) + $4
[00828D09] System.@AfterConstruction$qqrxp14System.TObject (Line 19684, "System.pas" + 2) + $5
[009FA8A0] Vcl.Forms.TCustomForm.Create (Line 4033, "Vcl.Forms.pas" + 36) + $2D
[00A06C12] Vcl.Forms.TApplication.CreateForm (Line 11607, "Vcl.Forms.pas" + 13) + $B
(00235E61) [00A56E61]

Wirklich hilfreich ist das für mich aber nicht. In UpdateList habe ich nichts gesehen. Liegt wohl auch daran, dass man nicht weiß, wann der Fehler nun auftritt.
Ich dachte, es könnte eventuell am Rechner liegen, aber in C# bekomme ich nicht mal gelegentlich einen Fehler.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#4

AW: TJumpList ist recht eigenwillig

  Alt 28. Aug 2023, 19:43
Zitat:
[00A43822] Vcl.JumpList.TCustomJumpList.CheckUpdateError (Line 906, "Vcl.JumpList.pas" + 8) + $36
[00A43AE1] Vcl.JumpList.TCustomJumpList.UpdateList (Line 960, "Vcl.JumpList.pas" + 45) + $23
[00A4299A] Vcl.JumpList.TCustomJumpList.DoAutoRefresh (Line 545, "Vcl.JumpList.pas" + 1) + $0
Ja, selbst nachsehn ist einfach, aber Andere .... da kann durch eine andere Delphi-Version oder Update-Stand bissl was verrutschen, aber dafür ist dann die relative Position gut, ab dem ersten Begin der Methode.

Delphi-Quellcode:
function TCustomJumpList.CheckUpdateError(ErrNo: HRESULT; const Description: string): Boolean;
var
  LHandled: Boolean;
begin
  Result := Succeeded(ErrNo);
  if not Result then
  begin
    LHandled := false;
    if Assigned(FOnListUpdateError) then
      FOnListUpdateError(Self, ErrNo, Description, LHandled);
    if not LHandled then
      raise EJumpListException.CreateFmt(SJumplistException, [ErrNo, Description]);
  end;
end;
Möglicher Bugfix Fehlerabfangen/-ignorieren:
OnListUpdateError und dort True zurückgeben.



So, nun weiter zur eigentlichen Ursache....
Delphi-Quellcode:
function TCustomJumpList.UpdateList: Boolean;
...
begin
      ...
      if CheckUpdateError(FDestinationList.BeginList(LMaxSlots, IID_IObjectArray, LRemovedTasks), SJumplistErrorBeginlist) then
      begin
          ...
          Result := CheckUpdateError(FDestinationList.CommitList, SJumplistErrorCommitlist);
Warum sagt das FDestinationList.CommitList denn nun "Nöööö"?

usw.




Da FDestinationList ein Interface ist und aus diesem Stückchen Code nicht erkennbar ist, was dahinter liegt ... am Enfachsten zur Laufzeit reindebuggen und schauen wo man landet.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Aug 2023 um 19:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
750 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: TJumpList ist recht eigenwillig

  Alt 30. Aug 2023, 12:58
Delphi-Quellcode:
function TCustomJumpList.CheckUpdateError(ErrNo: HRESULT; const Description: string): Boolean;
var
  LHandled: Boolean;
begin
  Result := Succeeded(ErrNo);
  if not Result then
  begin
    LHandled := false;
    if Assigned(FOnListUpdateError) then
      FOnListUpdateError(Self, ErrNo, Description, LHandled);
    if not LHandled then
      raise EJumpListException.CreateFmt(SJumplistException, [ErrNo, Description]);
  end;
end;
Möglicher Bugfix Fehlerabfangen/-ignorieren:
OnListUpdateError und dort True zurückgeben.
Hattest Du das gesehen?
Das ist zwar keine Lösung des wirklichen Problems, aber Du kannst den Fehler fangen.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#6

AW: TJumpList ist recht eigenwillig

  Alt 30. Aug 2023, 13:23
Vielleicht nicht unbedingt "blind" ein Result := True; , aber zumindestens Result := WinErrorCode = $80070497; .
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TJumpList ist recht eigenwillig

  Alt 30. Aug 2023, 17:42
Das ist zwar keine Lösung des wirklichen Problems, aber Du kannst den Fehler fangen.
Doch schon, aber ich wollte es so lange wie möglich ignorieren. Wenn man die Fehlermeldung abschaltet, ist der Fehler ja immer noch da. Falls das Schreiben der Datei tatsächlich nicht klappt, die wird doch sicherlich von Windows ausgelesen, wenn die Jumpliste angezeigt wird.

Allerdings scheint es zu funktionieren. Selbst wenn der Fehler auftritt landet wohl alles was soll auch in der Liste. Sie soll ja sowieso nur funktionieren, so lange das Programm läuft, vielleicht hat Windows dann alles im Speicher. Mit Bauchschmerzen wäre es eine Lösung. Falls die zu stark werden kann ich es ja immer noch in C# umschreiben. Dabei wollte ich nach fast zwei Jahren mal wieder etwas mit Delphi machen.
Also Danke an alle, die versucht haben mir zu helfen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#8

AW: TJumpList ist recht eigenwillig

  Alt 30. Aug 2023, 18:50
Zumindestens kannst du es dort still und heimlich loggen, damit es nicht ganz verschwindet.
Und jupp, darum auch die Einschränkung auf den einen Fehlercode, damit andere Fehler dennoch gezeigt werden.


Zitat:
ja immer noch in C# umschreiben
Aktuell lösen wir es zwar über eine *.EML ans StandardMailProgramm,
aber prinzipiell haben wir für die MAPI, mit Dateianhängen an Outlook, auch ein C#-Konsolenprogramm gebastelt, was die OfficeAPI im .NET nutzt, weil MSOffice mag die MAPI oft nicht.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (30. Aug 2023 um 18:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: TJumpList ist recht eigenwillig

  Alt 28. Aug 2023, 19:44
Ich habe noch nicht nachgeschaut, das ist ins Blaue geraten:
Hast du mal versucht, das nicht im OnCreate des Formulars zu machen, sondern abgekoppelt, z.B. mit TThread.ForceQueue?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#10

AW: TJumpList ist recht eigenwillig

  Alt 28. Aug 2023, 20:01
Zumindestens am Laden der DFM und Erstellungsreihenfolge wird es wohl nicht liegen.

OldCreateOrder gibt es nicht mehr, also muß OnCreate aus'm AfterConstruction kommen, nachdem alles aus der DFM fertig geladen und die FormInstanz erzeugt+verlinkt wurde.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Aug 2023 um 20:04 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 17: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