AGB  ·  Datenschutz  ·  Impressum  







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

Quelltext-Parsen von Delphi-Methoden

Ein Thema von urs.liska · begonnen am 14. Sep 2003 · letzter Beitrag vom 15. Sep 2003
 
urs.liska

Registriert seit: 6. Aug 2003
Ort: Freiburg
195 Beiträge
 
Delphi 6 Professional
 
#1

Quelltext-Parsen von Delphi-Methoden

  Alt 14. Sep 2003, 16:28
Hallo,

ich habe eine Frage zum Parsen von Delphi-Quelltext. Ich bin an einem Programm, das Delphi-Dateien bearbeitet. --> http://www.delphipraxis.net/internal...970&highlight=
Beim Einlesen von Methoden, die lokale Prozeduren definieren, habe ich das Problem, dass ich nicht weiß, wie ich das Ende der gesamten Methode bestimmen soll.
Ich gehe so vor, dass ich die Methode Zeile für Zeile einlese. Bevor die 'begin'-Zeile kommt, kann eine Methode nicht beendet sein. Danach betrachte ich sie als beendet, wenn entweder ein Keyword für eine neue Methode (function, procedure, constructor, destructor) oder ein Keyword für einen anderen Abschnitt kommt (const, var, type, initialization, finalization, 'end.') oder eine Zeile mit { T...} eine neue Klasse anzeigt. Das ist meine Funktion:
Delphi-Quellcode:
function TPasSorter.lineEndsMethod: boolean;
begin
  if FFirstMethodLine then
  begin
    result := false;
    FFirstMethodLine := false;
    exit;
  end;
  if not FMethodHasBegun then
  begin
    if lineStartsWith(methodStarters)
       then raise Exception.Create('local methods are not yet supported');
    result := false;
    if lineStartsWith('begin')
       then FMethodHasBegun := true;
    exit;
  end;
  result := lineStartsWith(getClassHeaders) or
            lineStartsWith(methodStarters) or
            lineStartsWith(methodEnders);
end;
Wenn aber eine Methode eine lokale Prozedur definiert, also vor dem 'begin' bereits function oder procedure steht, z.B.
Delphi-Quellcode:
function TForm1.Button1Click(Sender: TObject);
  function getSomething(offset: integer): Date;
  begin
    result := now + offset;
  end;

  procedure showSomething(Msg: string);
  var dt: Date;
  begin
    dt := getSomething(i);
    ShowMessage(DateToStr(dt);
  end;
  
var i: integer;
begin
  for i := 0 to 10 do
  ShowSomething(i);
end;
komme ich so nicht weiter.
Ich habe keine Vorstellung, wie ich damit zu Rande kommen soll. Es können ja sowohl 'procedure' und 'function' als auch 'var' auftauchen.

Es wäre klasse, wenn mir jemand einen guten Tipp geben könnte.

MFG
Urs
  Mit Zitat antworten Zitat
 


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 10:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz