FF hat mir eine PM geschrieben in der sein Problem nochmal näher erläutert hat. Allerdings macht ein Forum keinen Sinn wenn man Lösungswege per PM bespricht:
| FF hat folgendes per PM geschrieben hat folgendes geschrieben: |
Also, ich hatte das eher so gedacht:
ich habe den ordner "1".
ich habe in diesem ordner eine unbekannte Anzahl von Ordnern, mit unbekannten namen.
jez soll das programm in jeden dieser ordener reingehen, und dort die datei "IRGENDWAS.toc" finden.
in dieser Datei soll es eine Einzige Zahl ändern
und zwar steht in der ersten Zeile bspw. "## Interface: 20000".
statt diesem Text sollte da aber stehen "## Interface: (""EDIT1.TEXT"")". also die Zahl, die man ins edit feld eingegeben hat.... wie ich das mache, versteh ich aus deiner antwort net so genau... aba vllt wars auch doof beschrieben
|
Da du eine unbekannte Ordnerstruktur hast macht das etwas schwerer. Zur Problemlösung empfehle ich folgende Unit von
maximus:
www.delphi-forum.de/...mp;highlight=mxfiles
Wenn ich dich richtig verstanden habe suchst du alle Dateien mit der Endung .toc innerhalb einer bestimmten Ordnerstruktur. Schau dir die Unit an und die Erklärung von Maximus an, damit kannst du die gesuchten Dateien recht einfach finden.
Das gewünschte Ergebnis der Suche wäre eine Stringlist, in der die eindeutigen Pfade der Dateien liegen. Z.B. "C:\1\ordnerxy\Ordnerxyz\Datei.toc" usw.
Dann musst du schaun wie du die Textdatei änderst. Wenn die ## Interface: - Stelle an immer der selben Stelle liegt ist es einfach. Wenn du z.B. weisst, dass der gesuchte String immer in Zeile 5 liegt, dann kannst du die Textdatei in eine Stringlist laden (wie gesagt:
LOADFROMFILE), die Zeile 5 z.B. so austauschen
stringlist[4]:='## Interface: '+edit1.text); und die Stringlist dann mit
SAVETOFILE abspeichern.
Wenn sich die Position der ##Interface - Stelle immer ändert, musst du die Stelle mit
POS suchen. Wenn deine Datei bspw. so aussieht:
| Zitat: |
blablsgfsdf
blasddsdfsdf
sdfsdfsjdfsjdpf
sdfpsdjfpsdjf
##Interface "4000"
|
Kannst du mit
Delphi-Quelltext
1: 2: 3:
| for i:=0 to stringlist.count-1 do if pos('##Interface', stringlist[i])>0 then showmessage('##Interface befindet sich in Zeile '+inttostr(i+1)); |
herausfinden in welcher Zeile sich deine Direktive befindet. Und dann eben nach dem gewohnten Prinzip austauschen.
Scheinbar bist du noch recht neu, daher solltest du dich mit dem von mir geschriebenen auseinandersetzen und direkt auch noch ein paar Einsteigertuts durchmachen. Die von mir geposteten Quelltexte sind nicht Copy&Paste kompatibel. Du musst sie also verstehen, sonst bringt das hier nichts.