Thema: Delphi enum und Strings

Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

enum und Strings

  Alt 11. Mär 2008, 16:17
Sorry,

meine Suche ging ins leere und ein ordentlicher Titel ist mir auch nicht eingefallen. Ich erkläre erst mal wie ich es sonnst mache und dann die neue Aufgabenstellung. Es soll ja auch noch jemand durchsehen.

Ich habe eine Reihe von Fehlercodes die ich als Resourcestrings definiere. Dann einen Aufzählungstyp für meine Fehlercodes und zum Schluss ein Array mit den Strings.

Delphi-Quellcode:
resourcestring
  rs_Error1 = 'Error 1';
  rs_Error2 = 'Error 2';
  rs_Error3 = 'Error 3';
  rs_Error4 = 'Error 4';


type
  TMyErrors = (
  me_Error1,
  me_Error2,
  me_Error3,
  me_Error4
  );

const
  MyErrorStrings : Array[TMyErrors] of String = (
  rs_Error1,
  rs_Error2,
  rs_Error3,
  rs_Error4
  )
Taucht im Programmablauf ein Fehler auf und ich will diesen Anzeigen, so kann ich diesen wie folgt ausgeben:

Delphi-Quellcode:
procedure AddErrorString(Error : TMyError)
begin
  Memo.Lines.Add(MyErrorString[Error]);
end;
Das ist als Beispiel gedacht, sollte aber genügen.

Jetzt das Problem:
Ich bekomme Errors als Integer-Wert geliefert. Diese sind aber leider etwas aus der Reihe. Es gibt die Errors 1 und 2 und dann zum Bsp. 30 und 41(und ne Menge mehr). Mit dem Aufzählungstyp ist das ja noch hin zu bekommen:

Delphi-Quellcode:
type
  TMyErrors = (
  me_Error1,
  me_Error2,
  me_Error30 = 30,
  me_Error41 = 41
  );
aber dann ist bei mir Schluss. Muß ich jetzt wirklich eine eigene Function für meine Errorcodes schreiben wie:

Delphi-Quellcode:
function GetErrorString(Error : TMyError) : String;
begin
  case Error of
    me_Error1 : Result := rs_Error1;
    me_Error2 : Result := rs_Error2;
    me_Error30 : Result := rs_Error30;
    me_Error41 : Result := rs_Error40;
  end;
end;
oder gibt es einen Deklarationsweg wie oben?

Ich hoffe, ich hab mich jetzt nicht zu sehr geoutet, aber es gibt ja nur dumme Antworten und keine dummen Fragen.

Gruß oki
42
  Mit Zitat antworten Zitat