Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Notepad++, durchnummerieren (https://www.delphipraxis.net/190428-notepad-durchnummerieren.html)

haentschman 3. Okt 2016 10:53

Notepad++, durchnummerieren
 
Hallöle...:P

Bevor ich mich verzettele frage ich lieber ob das geht...:wink:

SQL als Ausgangsdaten:
Zitat:

INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (435, 'F30', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (436, 'F60', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (437, 'F90', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (438, 'F120', 1);
Ergebnis sollte sein:
Zitat:

INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (500, 'F30', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (501, 'F60', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (502, 'F90', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (503, 'F120', 1);
Kann ich die ID Spalte fortlaufend mit Suchen / Ersetzen mit Regulären Ausdrücken ändern? Die Logik sagt mir das das nicht gehen sollte, weil z.B. ein Startwert fehlt. :?

Hindergrund:
Ich habe SQL Statements die während des Erzeugens der Datenbank ausgeführt werden. Über die ID (Datenbankweit) liegen die "Voreinstellungen" am gleichen Platz. Ich hätte gern einige "Lücken" in den ID. Darum die Voreinstellungen der ID. :P

Danke...

Valle 3. Okt 2016 14:15

AW: Notepad++, durchnummerieren
 
Könntest du nicht einfach "VALUES (" durch "VALUES (65+" ersetzen?

himitsu 3. Okt 2016 14:45

AW: Notepad++, durchnummerieren
 
Per Suchen+Ersetzen Trennzeichen vor und hinter die Zahlen einfügen, bzw. den Teil erinfach blind ersetzen (ist ja egal, ob die aktuellen Zahlen verschwinden)
Dann in 'nen Tabellenprogramm (Excel, Calc, ...) einfügen und das Trennzeichen für den CSV-Import benutzen
Die Spalte mit der Zahl lässt sich einfach mit 'ner hochzählenden Zahl füllen
Und jetzt, wer hätte es gedacht, das wieder in den Texteditor und den CSV-Seperator löschen.

Aber die Mathematik geht hier schneller.

Oder die andere SQL-Lösung:
Eine Sequenz vorher mit 500 initialisieren/erstellen
und per RegEx die Zahlen durch diese Sequenz ersetzen.
(Falls ID schon eine Sequenz besitzt, dann die Zahlen durch
Delphi-Quellcode:
DEFAULT
ersetzen oder
Delphi-Quellcode:
ID,
und die Zahlen löschen, die Sequenz vorher auf 500 setzen und eventuell nachher wieder auf
Delphi-Quellcode:
Max(ID)+1
)

haentschman 3. Okt 2016 16:18

AW: Notepad++, durchnummerieren
 
Danke für eure Anregungen... :P

Ich habe für mich ein Tool programmiert was das erledigt. So kann ich das ganze visuell kontrollieren... :P

Bei der Recherche habe ich nicht wirklich was gefunden was den Match mathematisch verdröselt... :P

himitsu 3. Okt 2016 20:58

AW: Notepad++, durchnummerieren
 
Zitat:

Zitat von haentschman (Beitrag 1349588)
Bei der Recherche habe ich nicht wirklich was gefunden was den Match mathematisch verdröselt... :P

RegEx unterstützt nur String-Operationen ... mathematische Auswertungen kennt dat nicht, aber
SQL-Code:
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (65+435, 'F30', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (65+436, 'F60', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (65+437, 'F90', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (65+438, 'F120', 1);
oder
SQL-Code:
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (435+65, 'F30', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (436+65, 'F60', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (437+65, 'F90', 1);
INSERT INTO T_FIRE_CLASSES (ID, F_NAME, F_DEFAULT) VALUES (438+65, 'F120', 1);
geht auch ohne RegEx, mit 'nem stinknormalen Suchen+Ersetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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