Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 129
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09.07.2011, 21:32   #16 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Du hast mich wohl falsch verstanden. Ich habe nicht vor, meinen Editor zu verkaufen, der bleibt natürlich Freeware.
Ich meinte nur, dass PrFellow längere Zeit zu kaufen war, was in der Regel für den Funktionsumfang förderlich ist.

Eine Datei-weite Suche hab ich persönlich auf meine ToDo-Liste gesetzt, eine Batchsuche allerdings nicht.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 09.07.2011, 23:59   #17 (Direktlink)
Weiß worum´s geht
 
Registriert seit: 03.01.2010
Ort: Saarland
Beiträge: 103
Standard

Das kann der "Zitronenfalter" doch schon.

Trotzdem super
Ralph Theobald ist offline   Mit Zitat antworten
Alt 10.07.2011, 14:28   #18 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Sogesehen ja, stimmt...
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 13.07.2011, 19:32   #19 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 759
Standard

Hallo

Ich habe mal ein bißchen gebastelt um mich mit X2 und der Zitrone vertraut zu machen. Herausgekommen ist dieser Code.

Code:
' XProfan X2 Programm BatchErsetzen
' (c) Volkmar Göritz 2011

$H Windows.ph

Declare Int Ende, Grid, Bar, LoadBtn, SaveBtn, AddBtn, ChangeBtn, DelBtn, StartBtn, UndoBtn
Declare Int SeekEdit, ReplaceEdit
Declare Int NoExe, Mem DrawRect
Var Int IsUndo = 0
Struct TRect = X&, Y&, W&, H&
Var Int FileList = Create("List", 0)
Var Int SeekList = Create("List", 0)
Dim DrawRect, TRect

Proc CreateObjects
  Declare Mem Rect
  Dim Rect, TRect
  ~GetClientRect(%hwnd, Rect)
  Var Int ColW = (Rect.W& \ 2) - 2
  Var Int WH = Rect.H& - 60
  Var String GridForm = "Suchen;0;" + Str$(ColW) + ";Ersetzen;0;" + Str$(ColW)
  Grid = Create("GridBox", %HWnd, GridForm, 0, 4, 4, Rect.W& - 8, WH - 82)
  Create("Text", %hwnd, "Suchtext", 4, WH - 76, ColW, 16)
  Create("Text", %hwnd, "Ersatztext", ColW + 4, WH - 76, ColW - 4, 16)
  SeekEdit = Create("Edit", %hwnd, "", 4, WH - 62, ColW - 2, 20)
  ReplaceEdit = Create("Edit", %hwnd, "", ColW + 6, WH - 62, ColW - 8, 20)
  UsePen 0, 1, ~GetSysColor(~Color_BtnShadow)
  UseBrush 1, ~GetSysColor(~Color_BtnFace)
  Rectangle 4, (WH - 30) - Rect.W& - 4, WH + 14
  If IsUndo
    UseBrush 1, Rgb(168, 232, 168)
  Else
    UseBrush 1, Rgb(232, 168, 168)
  EndIf
  Rectangle 4, (WH + 22) - Rect.W& - 4, WH + 54
  Create("Text", %hwnd, "Ersetzenliste", 12, WH - 28, 88, 16)
  Create("Text", %hwnd, "Eintrag", ColW, WH - 28, 88, 16)
  LoadBtn = Create("Button", %hwnd, "Laden", 8, WH - 12, 88, 22)
  SaveBtn = Create("Button", %hwnd, "Speichern", 96, WH - 12, 88, 22)
  AddBtn = Create("Button", %hwnd, "Hinzufügen", ColW, WH - 12, 76, 22)
  ChangeBtn = Create("Button", %hwnd, "Ändern", ColW + 76, WH - 12, 76, 22)
  DelBtn = Create("Button", %hwnd, "Löschen", ColW + 152, WH - 12, 76, 22)
  StartBtn = Create("Button", %hwnd, "Starte Ersetzen", 8, WH + 28, 132, 22)
  UndoBtn = Create("Button", %hwnd, "Rückgängig", Rect.W& - 140, WH + 28, 132, 22)
  If GetCount(FileList)
    Case IsUndo : ShowWindow(StartBtn, 0)
    EnableWindow StartBtn, 0
    TextColor 0, -1
    DrawText 146, WH + 32, Rect.W& - 148, WH + 48, Str$(GetCount(FileList)) + " Datei(en) gewählt", 1
  Else
    ShowWindow(StartBtn, 0)
    ShowWindow(UndoBtn, 0)
    TextColor Rgb(255, 64, 0), -1
    DrawText 16, WH + 32, Rect.W& - 4, WH + 48, "Keine Datei(en) zur Verarbeitung gewählt", 1
  EndIf
  With DrawRect
    .X& = 146
    .Y& = WH + 22
    .W& = Rect.W& - 148
    .H& = WH + 54
  EndWith
  EnableWindow AddBtn, 0
  EnableWindow ChangeBtn, 0
  EnableWindow DelBtn, 0
  EnableWindow UndoBtn, 0
  Dispose Rect
EndProc

Proc TextMalen
  Parameters Int Zahl, Max, String Msg
  UseBrush 1, Rgb(228, 228, 64)
  Rectangle DrawRect.X&, DrawRect.Y& - DrawRect.W&, DrawRect.H&
  Case Zahl > 0 : Msg = Msg + "\nDatei " + Str$(Zahl) + " von " + Str$(Max)
  TextColor 0, -1
  DrawText DrawRect.X&, DrawRect.Y&, DrawRect.W&, DrawRect.H&, Msg, 1
EndProc

Proc LoadList
  Declare String Zeile
  Var String LoadString = LoadFile$(%hwnd, "Ersetzen-Liste laden", "*.lst", 0)
  If LoadString <> ""
    ClearList Grid
    Assign #1, LoadString
    Reset #1
    WhileNot Eof(#1)
      Input #1, Zeile
      AddString(Grid, Zeile)
    EndWhile
    Close #1 
  EndIf
EndProc

Proc SaveList
  Declare String Zeile
  Var String SaveString = SaveFile$(%hwnd, "Ersetzen-Liste speichern", "*.lst", 1)
  If SaveString <> ""
    Assign #1, SaveString
    ReWrite #1
    WhileLoop GetCount(Grid)
      Print #1, GetString$(Grid, &loop-1)
    EndWhile
    Close #1
  EndIf
EndProc

Proc DoAdd  ' Einträge der Editoren als neues Wertepaar eintrage
  Var String Zeile = Trim$(GetText$(SeekEdit)) + "|" + Trim$(GetText$(ReplaceEdit))
  AddString(Grid, Zeile)
  SetText SeekEdit, ""
  SetText ReplaceEdit, ""
  SendMessage(SeekEdit, $B9, 0, 0)
  SendMessage(ReplaceEdit, $B9, 0, 0)
EndProc

Proc DoChange ' Einträge der Editoren ersetzen aktuelle Auswahl im Grid
  Var String Zeile = Trim$(GetText$(SeekEdit)) + "|" + Trim$(GetText$(ReplaceEdit))
  Var Int Neu = GetCurSel(Grid)
  ReplaceString(Grid, Neu, Zeile)
  SetText SeekEdit, ""
  SetText ReplaceEdit, ""
  SendMessage(SeekEdit, $B9, 0, 0)
  SendMessage(ReplaceEdit, $B9, 0, 0)
EndProc

Proc DoDelete ' Löschen aktuelle Auswahl im Grid
  DeleteString(Grid, GetCurSel(Grid))
EndProc

Proc GridSel  ' Auswahl einer Zeile im Grid
  Var Int Sel = GetCurSel(Grid)
  Case Sel < 0 : Return
  Var String Zeile = GetString$(Grid, Sel)
  SetText SeekEdit, SubStr$(Zeile, 1, "|")
  SetText ReplaceEdit, SubStr$(Zeile, 2, "|")
  SendMessage(SeekEdit, $B9, 0, 0)
  SendMessage(ReplaceEdit, $B9, 0, 0)
EndProc

Proc MakeSeekList ' Erstellt Kopie der Suchgegriffe mit Anpassung für Suche nach regulären Ausdrücken
  Declare String Feld1
  ClearList SeekList
  WhileLoop GetCount(Grid)
    Feld1 = GetText$(Grid, &loop - 1, 0)
    If (Left$(Feld1, 2) = "<<") And (Right$(Feld1, 2) = ">>")
      Feld1 = Mid$(Feld1, 3, Len(Feld1) - 4)
      MessageBox(Feld1, "Codeübersetzung", 0)
    Else
      Feld1 = Translate$(Feld1, ".", "~.")
      Feld1 = Translate$(Feld1, "[", "~[")
      Feld1 = Translate$(Feld1, "{", "~{")
      Feld1 = Translate$(Feld1, "(", "~(")
      Feld1 = Translate$(Feld1, "]", "~]")
      Feld1 = Translate$(Feld1, "}", "~}")
      Feld1 = Translate$(Feld1, ")", "~)")
      Feld1 = Translate$(Feld1, "|", "~|")
      Feld1 = Translate$(Feld1, "?", "~?")
      Feld1 = Translate$(Feld1, "+", "~+")
      Feld1 = Translate$(Feld1, "*", "~*")
      Feld1 = Translate$(Feld1, "^", "~^")
      Feld1 = Translate$(Feld1, "$", "~$")
      Feld1 = Translate$(Feld1, "~", "~~")
      Feld1 = "(?i)" + Feld1
    EndIf
    AddString(SeekList, Feld1)
  EndWhile
EndProc

Proc MakeUndoName  ' Erstellt einen Namen für die Undodatei
  Parameters String File
  Declare String Ext, UndoFile
  Ext = SubStr$(File, -1, ".")
  UndoFile = Left$(File, Len(File) - Len(Ext) - 1) + ".Undo"
  Case Upper$(File) = Upper$(UndoFile) : UndoFile = ""
  Return UndoFile
EndProc

Proc ReplaceProc  ' Erstellt Undodatei und führt dann das Suchen-Ersetzen aus
                  ' und erstellt neue Datei mit den Änderungen
  Parameters Int Zahl, Max, String File, UndoFile
  Declare String Zeile, OutZeile, Feld1, Feld2
  TextMalen Zahl, Max, "Ersetzen"
  ' File umbenennen nach UndoFile
  ' UndoFile zum lesen öffnen und zeilenweise:
  '   Einlesen
  '   Ersetzen
  '   Schreiben nach File
  Set("RegEx", 1)
  Assign #2, File
  Rename #2, UndoFile
  Assign #2, File
  Assign #3, UndoFile
  Reset #3
  ReWrite #2
  WhileNot Eof(#3)
    Input #3, Zeile
    WhileLoop GetCount(Grid)
      Feld1 = GetString$(SeekList, &loop - 1)
      Feld2 = SubStr$(GetString$(Grid, &loop - 1), 2, "|") 'GetText$(Grid, &loop - 1, 2)
      Zeile = Translate$(Zeile, Feld1, Feld2)
    EndWhile
    Print #2, Zeile
  EndWhile
  Close #2
  Close #3
  Set("RegEx", 0)
EndProc

Proc DoFileReplace  ' Ersetzen entsprechend der Wertepaare in Eingangsdatei
  Declare String File, UndoFile
  MakeSeekList
  WhileLoop GetCount(FileList)
    File = GetString$(FileList, &loop - 1)
    UndoFile = MakeUndoName(File)
    If UndoFile <> ""
      ReplaceProc &loop, GetCount(FileList), File, UndoFile
    EndIf
  EndWhile
  TextMalen 0, 0, "Fertig"
EndProc

Proc DoFileUndo
  Declare String File, UndoFile
  WhileLoop GetCount(FileList)
    File = GetString$(FileList, &loop - 1)
    UndoFile = MakeUndoName(File)
    If UndoFile <> ""
      If FileExists(UndoFile)
        TextMalen &loop, GetCount(FileList), "Undo"
      ' File löschen und UndoFile in File umbenennen
        If FileExists(File)
          Assign #2, File
          Erase #2
        EndIf
        Assign #2, UndoFile
        Rename #2, File
      EndIf
    EndIf
  EndWhile
  TextMalen 0, 0, "Fertig"
EndProc

Proc UndoEnable
  Declare String File, UndoFile
  WhileLoop GetCount(FileList)
    File = GetString$(FileList, &loop - 1)
    UndoFile = MakeUndoName(File)
    If UndoFile <> ""
      If FileExists(UndoFile)
        EnableWindow UndoBtn, 1
        BREAK
      EndIf
    EndIf
  EndWhile
EndProc

Proc ButtonSet  ' Enablen der Controls abhängig vom Status
  Var Int L1 = Len(GetText$(SeekEdit))
  Var Int L2 = Len(GetText$(ReplaceEdit))
  Var Int Sek = SendMessage(SeekEdit, $B8, 0, 0) And L1
  Var Int Repl = SendMessage(ReplaceEdit, $B8, 0, 0) And L2
  Var Int Ch = (L1 <>0) & (L2 <> 0) & (SendMessage(SeekEdit, $B8, 0, 0) | SendMessage(ReplaceEdit, $B8, 0, 0))
  EnableWindow SaveBtn, GetCount(Grid)
  EnableWindow AddBtn,  Sek & Repl
  EnableWindow ChangeBtn, Ch & (GetCurSel(Grid) > -1)
  EnableWindow DelBtn, GetCurSel(Grid) > -1
  If GetCount(FileList)
    Case IsUndo = 0 : EnableWindow StartBtn, GetCount(Grid)
  EndIf
EndProc

Proc GetPar
  Declare String Par
  WhileLoop NoExe, %parcount
    Par = Par$(&loop)
    If Upper$(Par) = "-UNDO"
      IsUndo = 1
    ElseIf Upper$(Par) = "/UNDO"
      IsUndo = 1
    ElseIf &loop > NoExe
      AddString(FileList, Par)
    EndIf
  EndWhile
  Return GetCount(FileList)
EndProc

Proc GetParDlg
  Declare String Path, File
  Var Int Substr = 1
  Var String Par = LoadFile$(%hwnd, "Zu bearbeitende Datei(en) wählen", "*.*", 1)
  If Par <> ""
    If InStr("|", Par)
      Path = SubStr$(Par, Substr, "|")
      Inc Substr
      File = SubStr$(Par, Substr, "|")
      While File <> ""
        AddString(FileList, Path + File)
        Inc Substr
        File = SubStr$(Par, Substr, "|")
      EndWhile
    Else
      AddString(FileList, Par)
    EndIf
  EndIf
EndProc

Proc GetParams
  Var String Par = Upper$(Par$(0))
  If InStr("PRFRUN32.EXE", Par) | InStr("PROFAN.EXE", Par)
    NoExe = 1
    'Programm ist keine EXE
  Else
    NoExe = 0
    'Programm ist EXE
  EndIf
  IfNot GetPar()
    GetParDlg
  EndIf
  
  Par = ""
  WhileLoop GetCount(FileList)
    Case Par <> "" : Par = Par + Chr$(13)
    Par = Par + GetString$(FileList, &loop-1)
  EndWhile
EndProc

WindowTitle "Batchersetzen"
WindowStyle 538
Window 480, 488
Cls ~GetSysColor(~Color_InfoBK)
UseFont "ARIAL", 16, 0, 0, 0, 0
SetDialogFont ~GetStockObject(~Ansi_Var_Font)
GetParams
CreateObjects
UndoEnable
WhileNot Ende
  ButtonSet
  WaitInput
  If %key = 2
    Ende = 1
  ElseIf Clicked(LoadBtn)
    LoadList
  ElseIf Clicked(SaveBtn)
    SaveList
  ElseIf Clicked(StartBtn)
    DoFileReplace
  ElseIf Clicked(AddBtn)
    DoAdd
  ElseIf Clicked(ChangeBtn)
    DoChange
  ElseIf Clicked(DelBtn)
    DoDelete
  ElseIf Clicked(UndoBtn)  
    DoFileUndo
  ElseIf Clicked(Grid)
    Case GetCount(Grid) : GridSel
  EndIf
EndWhile
Parameter wären (K) (Q) für Dateinamen mit kompletten Pfad und Neuladen des Tabs mit den Änderungen. Es wäre auch möglich, das Programm ein zweites mal mit den Parametern (K) (Q) -undo einzubinden, dann ist nur rückgängig machen für die aktuelle Datei möglich. Gestartet wird die Aktion durch "Starte Ersetzen" oder "Rückgängig" Die laufende Aktion wird statisch angezeigt (leider kein Fortschrittsbalken) und ändert sich in "Fertig".

Ersetzungsliste:
Ist in einer Datei mit der Erweiterung *.LST (für Liste) gespeichert, es kann also beliebig viele Listen geben. Mit "Laden" wird eine Liste geladen und angezeigt und mit "Speichern" kann die Liste gespeichert werden. In die beiden Editfelder unter der Liste wird dann Begriffspaar eingetragen und dann mit "Hinzufügen" hinten an der Liste angehängt. Bei Auswahl einer Zeile der Liste erscheinen die beiden Begriffe in den Editfeldern. Mit "Löschen" wird die Zeile ohne Rückfrage gelöscht. Werden Änderungen vorgenommen, sind "Hinzufügen" und "Ändern" verfügbar. "Hinzufügen" fügt die Änderungen als neue Zeile hinten an und "Ändern" übernimmt die Änderungen in die ausgewählte Zeile. Danach sollte die Liste wieder gespeichert werden, um sie später verfügbar zu haben.
Das Erstellen und Bearbeiten einer Ersetzungsliste ist jederzeit möglich. Es muß keine zu durchsuchende Datei gewählt sein.

Die Suche ignoriert Groß-Kleinschreibung, ersetzt wird der Ausdruck wie angegeben. Als Suchbegriff sind auch reguläre Ausdrücke erlaubt, diese müssen dann in doppelten <<spitzen Klammern>> gesetzt sein. Dies ist notwendig, um eine Unterscheidung zu haben. Die Behandlung von Groß-Kleinschreibung muß dann durch den regulären Ausdruck selbst behandelt werden.

Das Programm kann auch Standalone verwendet werden. In diesem Falle wird beim Starten ein Dateidialog geöffnet. Hier ist es dann sogar möglich, mehrere Dateien zu wählen, die dann in einem Durchlauf behandelt werden. Es sollten keine Dateien gewählt werden, die bereits im Editor geöffnet sind, da hier die Tabs nicht neu geladen werden.

Hinweis zum Rückgängig machen: Es ist in jedem Falle die zu bearbeitende Datei zu wählen, nicht die Undo-Datei. Der Button "Rückgängig" ist immer dann verfügbar, wenn für mindestens eine gewählte Datei eine Undo-Datei existiert. Die Undo-Datei ist immer die Originaldatei vor der Änderung. Eine bereits vorhandene Undo-Datei wird dabei überschrieben. Rückgängig wäre damit auch jederzeit im Explorer möglich.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 14.07.2011, 08:24   #20 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Schöner Democode, Volkmar!
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 06.08.2011, 21:35   #21 (Direktlink)
Weiß worum´s geht
 
Registriert seit: 03.01.2010
Ort: Saarland
Beiträge: 103
Lächeln

Sorry , daß ich mich so spät melde.
Habe das Programm gleich mal ins Benutzermenü und die Werkzeuge
integriert .
Danke schön Volkmar
Ralph Theobald ist offline   Mit Zitat antworten
Alt 06.08.2011, 22:07   #22 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 759
Standard

Freut mich, wenn's Dir hilft.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
InfoRapid Suchen & Ersetzen 3.1f Paule 2.) Nachschlagewerke und Wörterbücher 0 03.03.2010 02:40
32 durch 64 Bit ersetzen X5-599 Windows Vista 2 08.02.2009 13:53
Festplatte ersetzen jochem Windows Vista 14 28.10.2008 21:17
Javascript Funktion in Funktion ausführen. ELeX Sonstige Programmiersprachen 1 13.03.2008 17:25
Excel Formeln Suchen Ersetzen Der-Commander Office-Anwendungen 10 09.09.2005 12:56



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:47 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2