AGB  ·  Datenschutz  ·  Impressum  







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

Auslesen der wirksamen Defines...

Ein Thema von GuenterS · begonnen am 6. Aug 2004 · letzter Beitrag vom 6. Aug 2004
Antwort Antwort
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#1

Auslesen der wirksamen Defines...

  Alt 6. Aug 2004, 09:47
Hallo,

jetzt stehe ich vor der Aufgabe aus einer Projektdatei (oder auch Projektgruppe) alle wirksamen {$Define ...} auszulesen.

Ich habe mir zuerst auch gedacht ok sollte nicht so schwer sein, bis ich mir Gedanken machte über {$IFDEF ...}, {$ELSE} und ähnliche Konstrukte.

Folglich müßte man bis zum ersten "{$IFDEF ...}" oder "{$IFNDEF ...}" alle "{DEFINES ...}" einlesen und dann selbst entscheiden ob die Bedingung zutrifft oder nicht.

Meine Frage wäre nun ob denn schon jemand solch ein Problem hatte und wie er/sie es dann gelöst hatte.

Vielleicht gibt es ja auch eine Funktion/Procedure von Delphi die mir das Parsen ersparen würde...

Diese Funktion liefert mir alle Defines aus einer Datei (ich habe die ganzen Defines in einer eigenen Datei welche ich dann immer per {$I ... } inkludiere.

Delphi-Quellcode:
function getActiveDefines(const AFileName: string; out ADefines: TStringList): integer;
var
  TF: TextFile;
  lTmpStrList: TStringList;
  lStr: string;
  i: integer;
begin
  if (not FileExists(AFileName)) then
  begin
    Result := -1;
  end
  else
  begin
    ADefines := TStringList.Create;
    ADefines.CommaText := '';
    lTmpStrList := TStringList.Create;
    try
      AssignFile(TF, AFileName);
      try
        Reset(TF);
        while (not EOF(TF)) do
        begin
          Readln(TF, lStr);
          if (pos('{$DEFINE ', UpperCase(lStr)) > 0) then
          begin
            SplitStr(UpperCase(lStr), '{$DEFINE ', lTmpStrList, true);
            for i := 0 to lTmpStrList.Count - 1 do
              if (Trim(lTmpStrList[i]) <> '') then
                ADefines.Add(Trim(copy(lTmpStrList[i], 1, pos('}', lTmpStrList[i]) - 1)));
          end;
        end;
      finally
        CloseFile(TF);
      end;
    finally
      FreeAndNil(lTmpStrList);
    end;
  end;
end;
Günter
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Auslesen der wirksamen Defines...

  Alt 6. Aug 2004, 12:12
Letztlich brauchst du dafuer einen Parser, da die IFDEFs etc eine eigene (zugegebenermassen kleine) Sprache bilden.
Irgendwo in den Hilfsprogrammen der JVCL ist da etwas vorhanden, aber ich habe mir das noch nie angeschaut.
  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:04 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