Entwickler-Ecke

Sonstiges (Delphi) - Externe Exception


Smartie - Mo 20.06.05 10:40
Titel: Externe Exception
Hallo,

ich habe mein Programmchen um eine kleine Prozeur erweitert, welche meinen Warnings, die in eine Logdatei geschrieben werden, auch evtl. auftretende Warnings hinzufügt.

Es funktioniert auch einwandfrei, nur brignt er ide Fehlermeldung "External Exception 80000001", und ich hab keine Ahnung warum, bzw. was dsiese Überhaupt aussagt (Die Delphi-Hilfe kontne mir da auch nicht helfen".

Weiß einer von Euch was da los ist?

Lieben Gruß und Danke

Smartie


BenBE - Mo 20.06.05 11:17

Externe Exceptions sind Windows-Fehlercodes. Die stehen im PSDK erklärt. Ich guck mal, ob ich gleich was finde ...

Sorry, nicht gleich gefunden ... WinError.h war zu lang ...


winerror.h
 
16907:
{ ... }
#define E_NOTIMPL                        _HRESULT_TYPEDEF_(0x80000001L)


Smartie - Mo 20.06.05 12:47

Hm,... und was kann ich da jetzt machen? Ic hweiß echt nimemr weiter. Es ist keine Lebensnotwendige Funktion, aber sie soltle schon drin sein. Kann ich das irgendwie abfangen?

Lieben Gruß und Danke

Smartie


BenBE - Mo 20.06.05 13:39

Kannst Du mal die Routine senden, die die Exception verursacht?

BTW: Nutzt Du darin zufällig ActiveX\COM\DCOM? Der Fehlercode ist eine ActiveX-Warning.


Smartie - Mi 22.06.05 07:19

Also, ich sende hier mal das Codestück, bei welchem , wenn ich es ausführe, die Exception kommt.

Und ja, ich nutze COM,aber bisher lief alles kla,r und nur weil ich plötzlich meine Warnings mit reinnehme, meckert er.

Also hier die Komponennte:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
{-----------------------------------------------------------------------------
  Procedure : Ziel_Warning
  Version   : Alfa

  Resultat  : Gibt ein Warning aus, wenn kein Zielspeicher angegeben wurde
-----------------------------------------------------------------------------}

procedure Ziel_Warning;
var sepi : String;
begin
  try
    sepi := copy(Ziel_VarArr[z],1,3);
    if upperCase(sepi) = 'NIX' then
    begin
      Ziel_WarningArr[z] := 'Kein Zielspeicher in Zeile ' + InttoStr(z) + ' definiert.';
      Warn_Bool01 := true;
    end
    else
    begin
      Ziel_WarningArr[z] := '';
    end;
  finally ;
  end;

end;


Herzlichen Dank und lieben Gruß

Smartie


BenBE - Mi 22.06.05 13:13

Auf Anhieb seh ich darin nix, was irgendwie Fehler verursachen könnte.
Kannst Du rein der Vollständigkeit halber mal noch die Deklarationen der einzelnen Variablen ergänzen?
Wenn dabei aber keine COM-Interfaces drin sind, sollte aber nix passieren.

BTW: Ist alles assigned und in-range?


Smartie - Mi 22.06.05 13:35

Ok, ich hab die ursaceh, und auch beseitigt.
Ich habe statt diese Prozedur in die Schleife zu donnern, diese da raus genommen, und ne eigene schleife machen lassen.

vorher sah es halt ungefähr so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure tudat;
begin
  for z := 1 to laenge do
  begin
    Ziel_VarArr[z] := 'blah blubb'
    Ziel_Warning; 
  end;
end;



und jetzt rufe ich Ziel_Warning; erst nach der prozedur "tudat" auf, und sie sieht entsprechend so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
{-----------------------------------------------------------------------------
  Procedure : Ziel_Warning
  Version   : Alfa

  Resultat  : Gibt ein Warning aus, wenn kein Zielspeicher angegeben wurde
-----------------------------------------------------------------------------}

procedure Ziel_Warning;
var sepi : String;
    f : integer;
begin
    for f := 1 to (L_INI_Array-1DO
    begin
      try
        sepi := copy(Ziel_VarArr[f],1,3);
        if upperCase(sepi) = 'NIX' then
        begin
          Ziel_WarningArr[f] := 'Kein Zielspeicher in Zeile ' + InttoStr(z) + ' definiert.';
          Warn_Bool01 := true;
        end
        else
        begin
          Ziel_WarningArr[f] := '';
        end;
      finally ;
      end;
    end;

end;


Wieder was gelernt *g*
Herzlichen Dank,

Smartie