Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative" (https://www.delphipraxis.net/180959-suche-mittels-grep-dfm-dateien-ergibt-mitunter-false-negative.html)

mjustin 3. Jul 2014 11:14

Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Vor dem Löschen von potentiell unbenutzten Datenbankobjekten schaue ich mittels GExperts Grep zuerst nach, ob dieses Objekt tatsächlich an keiner Stelle im Anwendungscode oder Tests mehr verwendet wird.

Leider ist (zumindest in Delphi 2009 noch) die Textform der DFMs nicht immer "grep-bar", weil lange Textzeilen mitten im Bezeichner umbrochen werden. Beispiel:

Delphi-Quellcode:
object qryBeispielDataSet: TSimpleDataSet
    ...
    DataSet.CommandText =
      'select tabellen_id, feldname1, feldname2'#13#10'from view_na' +
      'me'#13#10'where bedingung'
    ...
  end
Eine grep-Suche nach Datenbankobjekt 'view_name' liefert daher keinen Treffer. Das ist aus Sicht von grep auch völlig korrekt so ;)
Wird in neueren Delphi Versionen auch noch so in Text-DFMs umbrochen?

Dejan Vu 3. Jul 2014 11:22

AW: Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Schreib Dir doch ein eigenes DFM-GREP, oder konvertiere die DFM vor dem Greppen.

himitsu 3. Jul 2014 11:53

AW: Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Oder du lässt deine DFMs binär speichern .... da wird nichts umgebrochen. :stupid:

Sherlock 3. Jul 2014 12:37

AW: Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Du könntest auch versuchen reguläre Ausdrücke bei der Suche zu verwenden. Genau für solche Fälle sind sie ja da.

Sherlock

Namenloser 3. Jul 2014 14:18

AW: Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Zitat:

Zitat von Sherlock (Beitrag 1264266)
Du könntest auch versuchen reguläre Ausdrücke bei der Suche zu verwenden. Genau für solche Fälle sind sie ja da.

Sherlock

Wobei das schon etwas hässlich wird, wenn man davon ausgehen muss, dass nach jedem Zeichen ein Umbruch sein könnte.

Sherlock 3. Jul 2014 14:55

AW: Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Wohl wahr :D
Ich bin nur froh, daß nicht nach einem Beispiel für so einen Audruck gefragt wurde. Ich würde einfach zwei bis dreimal leicht variiert suchen, und dann davon ausgehen, daß es schon schief gehen wird. Um ganz sicher zu gehen, würde ich die DB auch einfach so lassen wie sie ist. ;)

Sherlock

himitsu 3. Jul 2014 16:29

AW: Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Mist, dachte schon, man könne die Zeilenlänge irgendwo ändern, aber das ist hart einprogrammiert.

Du hättest das dann ja nur eine andere Maximallänge (möglichst groß) für ObjectResourceToText definieren brauchen
und schon gäbe es zukünftig keine Zeilenumbrüche mehr.

Delphi-Quellcode:
procedure ObjectBinaryToText(Input, Output: TStream);
  procedure ConvertValue;
  const
    LineLength = 64;

Dejan Vu 3. Jul 2014 18:50

AW: Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Was hält dich eigentlich davon ab, ein \'+\r\n\s*\' per RegEx einfach zu eliminieren?

mjustin 5. Jul 2014 07:41

AW: Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Zitat:

Zitat von Dejan Vu (Beitrag 1264343)
Was hält dich eigentlich davon ab, ein \'+\r\n\s*\' per RegEx einfach zu eliminieren?

Wenn "eliminieren" bedeutet "aus den Dateien zu entfernen": ja, eine zweistufige Verarbeitung - erst alle diese Umbrüche aus den Dateien zu löschen und dann die Suche durchführen, scheint die einzige Lösung zu sein.

Als Erweiterung für GExperts oder cnPack wäre das ganz nett. (Update: einen Feature-Vorschlag bei GEXpert.org habe ich eingereicht).

Dejan Vu 5. Jul 2014 08:02

AW: Suche mittels Grep in DFM-Dateien ergibt mitunter "false negative"
 
Check mal SED for Windows. Mit PowerScript geht das auch


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr.
Seite 1 von 2  1 2      

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