AGB  ·  Datenschutz  ·  Impressum  







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

DWORD Array...

Ein Thema von moonwhaler · begonnen am 19. Sep 2007 · letzter Beitrag vom 19. Sep 2007
Antwort Antwort
moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#1

DWORD Array...

  Alt 19. Sep 2007, 11:17
Hallo zusammen!

Ich habe eine rein technische Frage: Ich schreibe an einem kleineren Logging Mechanismus, welcher auch Zustände, bzw. Typen einer Log-Meldung speichern soll. Ich habe mir deshalb "arrays" ausgesucht, welche ich in dieser Art schreibe:

Delphi-Quellcode:
type
  // Logging STYLE array. Add new types only at the end of the list!!
  // Defines the style, read: What kind of error / ... happened
  RLogStyle = ( LOGSTYLE_NULL,
                LOGSTYLE_ERROR,
                LOGSTYLE_ACTION,
                LOGSTYLE_INFO );

Das Vorteilhafte daran ist, dass ich jederzeit diese neuen "Array Typen" einer Variablen zuweisen kann, also zum Bleistift:

var LogStyle: RLogStyle; Fein ist auch, dass ich dies einfach speichern und sogar später wieder einlesen und sogar in den ursprünglichen "Zustand" versetzen kann, durch simples Casting.

In eine Datei schreiben....

Delphi-Quellcode:
var LogStyle: RLogStyle;
begin
  LogStyle := LOGSTYLE_ERROR;
  SaveStringToFile( IntToStr( LogStyle ) );
end;
Aus einer Datei lesen....

Delphi-Quellcode:
var LogStyle: RLogStyle;
begin
  LogStyle := RLogStyle( StrToIntDef( ReadSomethingFromFile, 0 ) );
end;
"ReadSomethingFromFile" ist einfach nur eine Beispielfunktion, die Daten aus einer Datei liest. So toll alles ist, auch Einschränkungen (und die sind für mich eigentlich ausschlaggebend) gibt es: Definiere ich einen Array fest (wie oben), kann ich nachträglich nicht einfach "zwischendrin" neue Einträge einfügen, da sich dann (logischerweise) auch der Wert verschiebt, was bedeutet, dass auch einem "LOGSTYLE_ERROR" schnell ein "LOGSTYLE_NULL" werden könnte.

Eine andere Möglichkeit, die ich aufgeschnappt habe, wäre es Konstanten zu definieren und diese als DWORD zuzuweisen. Wobei ich aber auf ein einfaches Casting beim "Zurücklesen" verzichten und eine eigene Umwandlungsfunktion schreiben müsste. Was sicherlich nicht schlecht ist, jedoch doppelten Wartungsaufwand mit sich trägt:

Delphi-Quellcode:
const
  // Defines the style, read: What kind of error / ... happened
  LOGSTYLE_NULL = 9000;
  LOGSTYLE_ERROR = 9100;
  LOGSTYLE_ACTION = 9200;
  LOGSTYLE_INFO = 9300;
Einmal bei der Konstantendeklaration selbst und dann in der Umwandlungfunktion, von Integer zu DWORD-Konstante...

Jetzt meine Frage: Gibt es jemanden unter Euch, der ähnliches schonmal überlegt hat und eine optimale Lösung für diese Problematik (nenne ich sie jetzt einfach mal) gefunden hat?


Viele Grüße,
moon
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: DWORD Array...

  Alt 19. Sep 2007, 11:26
Zitat von moonwhaler:
"arrays"
Das was du meinst sind Aufzählungen (Enumeration) und keine Arrays.

Das mit den DWORD Konstanten kannst du auch gleich beim deklarieren des Aufzählungstyps machen:
Delphi-Quellcode:
type
  TMyEnum = (meOne = 100, meTwo = 200);
Wieso möchtest du die neuen Werte dazwischen einfügen statt sie einfach anzuhängen?
  Mit Zitat antworten Zitat
moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: DWORD Array...

  Alt 19. Sep 2007, 11:33
Hi,

schonmal danke für die Antwort. Man wird immer schlauer, "Enumeration" also.
Den Tipp mit dem direkten zuweisen innerhalb der Enumeration habe ich bereits getestet und wird nicht zugelassen:

Code:
[Fehler] logging.pas(11): ',' oder ')' erwartet, aber '=' gefunden
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: DWORD Array...

  Alt 19. Sep 2007, 11:57
Du hast ja auch kein Delphi 6 oder neuer (habe ich ganz übersehen).
  Mit Zitat antworten Zitat
moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: DWORD Array...

  Alt 19. Sep 2007, 12:01
So ein Mist.

Leider kann ich das hier nicht updaten, da sehr viele Programme noch Verwurzelungen in das alte Delphi haben, sonst hätte ich schon längst ein neues angefordert...
  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 20:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz