AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Pegasus: Luckies persönliches Synchronisationstool
Thema durchsuchen
Ansicht
Themen-Optionen

Pegasus: Luckies persönliches Synchronisationstool

Ein Thema von Luckie · begonnen am 28. Feb 2005 · letzter Beitrag vom 8. Jan 2009
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

Re: Pegasus: Luckies persönliches Synchronisationstool

  Alt 7. Aug 2006, 12:26
Duhu Luckie,

hab mir och ma deinen Pegasus angeguckt und irgendwie läuft da was nich so, wie soll bestimmt soll.

Isch kann of die Verzeichnisbuttons rumklicken wie isch will, aber nüschts passiert.


Nagut, also hab'sch ma selber kompiliert, nachgeguckt und siehe da ... CoInitialize(nil) liefet S_FALSE und wenn es dat macht, machst du überhauptnüschts ... nichma 'ne Fehlermeldung hast'e für mich. *eingeschnapptsei*


So läuft es ^^
Delphi-Quellcode:
var
  CoInit: Boolean;
begin
  Result := false;

  CoInit := CoInitialize(nil) = S_OK;
  try
    ...
  finally
    if CoInit then CoUninitialize;
  end;

Hier ma ä leicht verständliches Beispiel:
Delphi-Quellcode:
program Project1;

uses Windows, SysUtils, ActiveX;

var CoInit1, CoInit2: Boolean;

begin
  CoInit1 := CoInitialize(nil) = S_OK;
  try

    CoInit2 := CoInitialize(nil) = S_OK;
    try
      MessageBox(0, PChar('CoInit1=' + BoolToStr(CoInit1, True)
        + ', CoInit2=' + BoolToStr(CoInit2, True)), '', 0);
    finally
      if CoInit2 then CoUninitialize;
    end;

  finally
    if CoInit1 then CoUninitialize;
  end;
end.
Man kann nur einmal initialisieren (jedenfalls bei mir > D7 + WinXP SP2).

Und da es über TApplication.Initialize schonmal aufgerufen wurde ...

Delphi-Quellcode:
procedure TApplication.Initialize;
begin
  if InitProc <> nil then TProcedure(InitProc);
end;
InitProc zeigt auf InitComObj, wo entweder CoInitializeEx oder CoInitialize ofjerufen wird.

Mann ohh mann, da such man sich dumm und dusslig und dann isses da, wo man hätte als erstes nachsehen können/sollen.
Code:
//ComObj.pas ... die von D7
initialization
  ...
  if not IsLibrary then
  begin
    SaveInitProc := InitProc;
    [color=clRed]InitProc := @InitComObj;[/color]
  end;

Und dat hier...
Zitat:
---------------------------
Pegasus.exe - Fehler in Anwendung
---------------------------
Die Ausnahme "Unbekannter Softwarefehler" (0x0eedfade) ist in der Anwendung an der Stelle 0x7c81eb33 aufgetreten.


---------------------------
OK Abbrechen
---------------------------
es macht sich besonders gut, wenn sich (noch) nichts in der ListView1 befindet
Delphi-Quellcode:
procedure TForm1.ListView1DblClick(Sender: TObject);
var
  s: String;
begin
  s := ListView1.Items[Listview1.ItemIndex].Caption;
  ShellExecute(Handle, 'open', PChar(s), nil, nil, SW_SHOWNORMAL);
end;
Ein Therapeut entspricht 1024 Gigapeut.
  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 05:30 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