Announcement

Collapse
No announcement yet.

Probleme mit IAutoComplete2 in der IDE

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit IAutoComplete2 in der IDE

    Hallo,
    ich habe in mir das Interface IAutoComplete2 in einer Komponente gekapselt. Nachdem meine anfänglichen Schwierigkeiten nun gelöst sind (siehe "IEnumString in Komponente verwenden" in diesem Forum) und die Komponente auch recht gut funktioniert ist mir allerdings noch etwas merkwürdiges an diesem Interface aufgefallen. Wenn nun dieses AutoComplete-Fenster geöffnet wird, zeigt der Delphi-Debugger das Debug-Fenster an. Etwas oberhalb der Cursorposition steht etwas von "ntdll.DbgBreakPoint". Ist das normal oder habe ich einen Fehler gemacht? Wenn die EXE ohne Debigger läuft, tritt kein Fehler auf und alles funktioniert wunderbar.

    Als kleine Zusatzanmerkung noch: Deser DbgBreakPoint scheint immer kurz nach dem Durchlaufen von IEnumString.Next aufzutreten. Hier der Source aus meiner Klasse TEnumString (die ich per Cut and Paste aus COM/DCOM/COM+ mit Delphi übernommen habe):

    <pre>
    function TEnumString.Next(celt: Longint; out elt; pceltFetched: PLongint): HResult;
    var
    i: integer;
    begin
    { Nächstes Element der Collection zurückliefern }
    i := 0;
    while (i < celt) and (FIndex < FStrings.Count) do
    begin
    TPointerList(elt)[i] := PWideChar(WideString(FStrings[FIndex]));
    Inc(i);
    Inc(FIndex);
    end;
    if pceltFetched <> nil then
    pceltFetched^ := i;
    if i = celt then
    Result := S_OK
    else
    Result := S_FALSE;
    end;
    </pre>

    Ich nutze Delphi 5 Pro, W2k Pro SP2 und den IE 5.5 SP1. Mit der Delphi 6-Trial auf dem gleichen System passiert das aber auch:-(

    MfG Jan

  • #2
    Hallo,

    dieser unplanmässige Halt im CPU-Fenster tritt bei einigen Windows 2000-Installationen auf, aber nicht bei allen. Es betrifft nicht nur dieses Problem, sondern auch ADO usw. In CodeCentral ist die Package <i>W2kDebugFix50.dpk</i> zu finden, dort wird unmittelbar nach dem Starten der Anwendung in der IDE das Speicherabbild der Anwendung geändert, indem über <i>WriteProcessMemory</i> die Breakpoint-Signatur geändert wird.
    <pre>
    unit Debugexpertu;
    { ************************************************** ************************

    original code from "unit Win2KCpu;" a CodeRush plugin datamodule

    converted to a standard Delphi IDE expert by Dennis M. Passmore

    Copyright (c) 2000 mdWare, ninc.

    Description: THE implementation for the Windows 2000 CPU Window bug

    Author: Mark J. DuCharme

    Created: 09/11/2000

    ************************************************** ************************** }
    ...</pre>
    Über die INI-Datei <i>W2kDebugFix.ini</i> kann die exakte Adresse (zu sehen im CPU-Fenster) angepasst werden:
    <pre>
    [Defaults]
    Delay=100
    [BreakPoints]
    $77F9EEA9=CC
    </pre&gt

    Comment

    Working...
    X