[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Datei mit write zeilenweise ändern

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Datei mit write zeilenweise ändern

JeT
Beiträge gesamt: 35

4. Jul 2018, 21:34
Beitrag # 1 von 4
Bewertung:
(1609 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich habe ein komplexeres Script, in das ich nun eine Konfigurationsdatei einbauen möchte, die über einen Dialog dann je nach Häkchen geändert wird.

Ich habe jetzt einen funktionierenden Ansatz, wie ich die Datei zeilenweise ändern kann

Code
    function setConfig(pos, str) { 
var pos = pos-1;
var cfgFile = new File(confFile);

if (cfgFile.exists == true) {
var content = [];

cfgFile.open('r');
cfgFile.encoding = 'UTF-8';
while (!cfgFile.eof) {
content.push(cfgFile.readln());
}
cfgFile.close();

content[pos] = str;
cfgFile.open('w');
cfgFile.encoding = 'UTF-8';
for (var i=0; i < content.length; i++)
cfgFile.writeln(content[i]);
cfgFile.close();

}
}


Muss das wirklich so umständlich sein?

Ich hatte es vorher anders umgesetzt, nämlich, dass ich die Datei bis zur entsprechenden Zeile auslese und dann per write() ersetze – das funktioniert aber nur solange, wie neue und alte Zeile gleich lang sind... ist die Zeile kürzer bleibt was vom alten Text übrig, oder länger ersetze ich auch über die Zeile hinaus.

Danke für euer Feedback
Jens


Grüße
Jens



Heute ist nicht aller Tage, ich komme wieder, keine Frage!

(Dieser Beitrag wurde von JeT am 4. Jul 2018, 21:36 geändert)
X

Datei mit write zeilenweise ändern

WernerPerplies
Beiträge gesamt: 2687

5. Jul 2018, 07:21
Beitrag # 2 von 4
Beitrag ID: #564744
Bewertung:
(1579 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jens,

warum willst Du die Datei zeilenweise ändern?

Lese die Datei konplett ein, ändere sie und schreibe sie komplett als String raus.

Einstellungen erzeugt man heute üblicherweise im JSON-Format.

Da erzeugst Du für die Einstellungen ein JavaScript-Object oder ein Array, wandelst Objekt oder Array in das JSON-Format um und schreibst das Ganze als String raus.

Umgekehrt liest Du den String, wandelst das Format und hast wieder ein Object oder Array.

Für all das gibt es fertige Routinen.

Such mal nach JSON.parse() und JSON.stringify().

Als Ergebnis erhältst Du eine wohlstrukturierte Textdatei:

Code
// Voreinstellungsdatei für WpsPdfProExport, Skript von Werner Perplies, EDV-Anwendungsberatung, https://weepee.de, e-mail: [email protected] 
// Achtung! - Änderungen in dieser Datei können zu einer Fehl- oder Nichtfunktion des Skriptes führen.
[
{
"name": "WpsPdfProExportLocation",
"value": {
"x": 150,
"y": 150
}
},
{
"name": "WpsPdfProExportSize",
"value": {
"w": 705,
"h": 707
}
},
{
"name": "wpsPdfProExportLocation",
"value": {
"x": 150,
"y": 150
}
},
{
"name": "wpsPdfProExportSize",
"value": {
"w": 769,
"h": 400
}
},
{
"name": "attachedPdfServer",
"value": {
"server01": {
"folderS": "~/Source/Workspaces/WpsCSharpProjects/WpsPdfProServer/wpsPdfServer/server01",
"name": "server01",
"config": {

},
"runningServers": [

]
},
"server02": {
"folderS": "~/Source/Workspaces/WpsCSharpProjects/WpsPdfProServer/wpsPdfServer/server02",
"name": "server02",
"config": {

},
"runningServers": [
{
"folderS": "~/Source/Workspaces/WpsCSharpProjects/WpsPdfProServer/wpsPdfServer/server02",
"name": "server02",
"config": {

},
"exportFormat": "ExportFormat.PDF_TYPE"
}
]
}
}
},
{
"name": "lastSelectedPdfServerFolder",
"value": "~/Source/Workspaces/WpsCSharpProjects/WpsPdfProServer/wpsPdfServer/server02"
},
{
"name": "selectedServer",
"value": "server02"
},
{
"name": "winWpsPdfProExportLocation",
"value": {
"x": 150,
"y": 150,
"length": 2
}
},
{
"name": "winWpsPdfProExportSize",
"value": {
"w": 769,
"h": 607
}
},
{
"name": "lastSelectedPdfPref",
"value": "[Kleinste Dateigröße]"
},
{
"name": "pdfSettings",
"value": {

}
},
{
"name": "pdfExportSetting",
"value": "xxxxxxxx"
},
{
"name": "selectOperatingMode",
"value": 1
},
{
"name": "operatingMode",
"value": 0
},
{
"name": "saveMode",
"value": 0
},
{
"name": "WpsPdfProExportLogLocation",
"value": {
"x": 150,
"y": 150
}
},
{
"name": "WpsPdfProExportLogSize",
"value": {
"w": 769,
"h": 607
}
}
]


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#564739]

Datei mit write zeilenweise ändern

JeT
Beiträge gesamt: 35

10. Jul 2018, 18:51
Beitrag # 3 von 4
Beitrag ID: #564816
Bewertung:
(1523 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Werner,

ja, ein ähnliches Prinzip habe ich umgesetzt bzw. schau mir das mit dem JSON auch nochmal an.

Zitat warum willst Du die Datei zeilenweise ändern?

Ist mehr eine rein theoretische Performance-Überlegung (die in der Praxis vllt. gar keine Rolle spielt):
warum soll ich bsp. hundert Zeilen auslesen und neuschreiben, wenn ich nur die zweite umschreiben muss...

Grüße
Jens


Grüße
Jens



Heute ist nicht aller Tage, ich komme wieder, keine Frage!


als Antwort auf: [#564744]

Datei mit write zeilenweise ändern

WernerPerplies
Beiträge gesamt: 2687

10. Jul 2018, 19:55
Beitrag # 4 von 4
Beitrag ID: #564817
Bewertung:
(1518 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jens,

Zitat Ist mehr eine rein theoretische Performance-Überlegung (die in der Praxis vllt. gar keine Rolle spielt):

Sicher nicht, eine Lösung, wie Du Sie dir vorstellst, benötigt mehrere Plattenzugriffe und würde auch intern alle Daten einlesen und wieder herausschreiben.
Aber Du kannst es ja gerne mal ausprobieren. ;-)

Eine JSON-Lösung findest Du beispielsweise hier:

JSON-Datei erzeugen und wieder einlesen


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#564816]
X

Aktuell

Web / SEO / Blockchain / Betriebssystem
unsplash_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/