unit Unit_Haupt;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
Vcl.ExtCtrls;
type
TForm_GUI =
class(TForm)
Edit_Suchen: TLabeledEdit;
Edit_Ersetzen: TLabeledEdit;
Label_Überschrift: TLabel;
ListBox_Dateien: TListBox;
Button_Starten: TButton;
Button_Hinzufügen: TButton;
Button_Löschen: TButton;
OpenDialog: TOpenDialog;
Label_Verarbeite: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button_HinzufügenClick(Sender: TObject);
procedure ListBox_DateienDrawItem(Control: TWinControl;
Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure Button_LöschenClick(Sender: TObject);
procedure Button_StartenClick(Sender: TObject);
private
{ Private-Deklarationen }
flbHorzScrollWidth: Integer;
public
{ Public-Deklarationen }
end;
var
Form_GUI: TForm_GUI;
Projektpfad:
String;
const
Pfadkürzel = '
$PROJECT';
implementation
{$R *.dfm}
////////////////////
//Initialisierung://
////////////////////
procedure TForm_GUI.FormCreate(Sender: TObject);
var
Datei:
String;
Inhalt: TStringList;
Stelle, i: Integer;
begin
if ParamCount > 0
then
begin
Datei := ParamStr(1);
if ExtractFileExt(Datei) = '
.dproj'
then Delete(Datei, Length(Datei) -1, 2);
//Lösche "oj" aus "dproj", um "dpr" zu erhalten.
if ExtractFileExt(Datei) = '
.dpr'
then //Wenn nicht .dpr, dann verwerfen.
begin
Inhalt := TStringList.Create;
try
Inhalt.LoadFromFile(Datei);
Stelle := Pos('
.pas', Inhalt.Text);
while Stelle > 0
do
begin
for i := Stelle -2
downto 1
do //#39 = '
if Inhalt.Text[i] = #39
then
begin
ListBox_Dateien.Items.Add(Pfadkürzel + '
\' + Copy(Inhalt.Text, i +1, Stelle + 3 - i));
//Pfade mit Pfadkürzel abkürzen.
Break;
end;
Stelle := Pos('
.pas', Inhalt.Text, Stelle +1);
end;
finally
Inhalt.Free;
end;
end;
Projektpfad := ExtractFilePath(Datei);
end;
end;
////////////
//Buttons://
////////////
procedure TForm_GUI.Button_HinzufügenClick(Sender: TObject);
var
i: Integer;
begin
if OpenDialog.Execute
then
begin
if Projektpfad = '
'
then ListBox_Dateien.Items.AddStrings(OpenDialog.Files)
else
for i := 0
to OpenDialog.Files.Count -1
do
ListBox_Dateien.Items.Add(StringReplace(OpenDialog.Files[i], Projektpfad, Pfadkürzel, []));
//Wenn sich die Datei unterhalb des Projektverzeichnisses befindet, wird dieses verkürzt dargestellt.
end;
end;
procedure TForm_GUI.Button_LöschenClick(Sender: TObject);
begin
Listbox_Dateien.DeleteSelected;
end;
procedure TForm_GUI.Button_StartenClick(Sender: TObject);
var
i: Integer;
Inhalt: TStringList;
Datei:
String;
begin
Label_Verarbeite.Visible := true;
Application.ProcessMessages;
Inhalt := TStringList.Create;
try
for i := 0
to ListBox_Dateien.Items.Count -1
do
begin
Datei := StringReplace(ListBox_Dateien.Items[i], Pfadkürzel, Projektpfad, []);
//Pfadkürzel durch richtigen Pfad ersetzen.
Inhalt.LoadFromFile(Datei);
Inhalt.Text := StringReplace(Inhalt.Text, Edit_Suchen.Text, Edit_Ersetzen.Text, [rfReplaceAll]);
Inhalt.SaveToFile(Datei);
end;
finally
Inhalt.Free;
end;
Label_Verarbeite.Visible := false;
Application.ProcessMessages;
ShowMessage('
Alles ersetzt!');
end;
//////////////
//Sonstiges://
//////////////
//Für die horizontale Scrollbox:
procedure TForm_GUI.ListBox_DateienDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
Len: Integer;
NewText:
String;
begin
NewText := Listbox_Dateien.Items[
Index];
with Listbox_Dateien.Canvas
do
begin
FillRect(Rect);
TextOut(Rect.Left +1, Rect.Top, NewText);
Len := TextWidth(NewText) + Rect.Left + 10;
if Len > flbHorzScrollWidth
then
begin
flbHorzScrollWidth := Len;
Listbox_Dateien.Perform(LB_SETHORIZONTALEXTENT, flbHorzScrollWidth, 0);
end;
end;
end;
end.