Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Textdatei ändern


1 reply to this topic

Lehrling1988

Lehrling1988
  • Full Members
  • 49 posts

Posted 17 November 2009 - 14:09

Hallo zusammen,

ich muss einen Zahl mitten in einer Textdatei ändern.
Dazu muss ich aus Datei 1 die Zahl auslesen (auch mitten in der Datei) und sie dann mitten in die Datei 2 schreiben.
Die passenden Punke muss ich mir natürlich auch noch raussuchen.
Wie mache ich das?

Hoffe Ihr könnt mir helfen.
Habe auch schon gesucht aber nichts hilfreiches gefunden.

gr.
Robert
Man lernt nie aus...darum bin ich immer noch ein Lehrling und werde es immer bleiben...

Maharani

Maharani
  • Full Members
  • 50 posts

Posted 17 November 2009 - 16:28

QUOTE (Lehrling1988 @ 2009-11-17 15:09)
Hallo zusammen,

ich muss einen Zahl mitten in einer Textdatei ändern.
Dazu muss ich aus Datei 1 die Zahl auslesen (auch mitten in der Datei) und sie dann mitten in die Datei 2 schreiben.
Die passenden Punke muss ich mir natürlich auch noch raussuchen.
Wie mache ich das?

Hoffe Ihr könnt mir helfen.
Habe auch schon gesucht aber nichts hilfreiches gefunden.

gr.
Robert

Hallo,

erst mal nur auf die Schnelle: Wir passen den Programmpfad in einem ini-File wie folgt an:

CODE

function UpdatePathInIni()
   STRING szFile, svResult, svString;
   LIST listID;
   NUMBER nRc;
   STRING svCurrentPath, svNewPath, svTmp;
   NUMBER pos, nIndexDest, nIndexSrc, nCount;
begin
   // get the path as it is currently used in opalctrl.ini
   szFile = TARGETDIR_DATA ^ "Config" ^ "OpalCtrl.ini";  
   // OpalCtrl.ini could be readonly  
   ChangeFileAttributes();
   if( GetProfString( szFile, "devices", "device1", svResult ) = 0 ) then
       svCurrentPath = "";
       listID = ListCreate( STRINGLIST );
       StrGetTokens( listID, svResult, "," );
       nRc = ListGetFirstString( listID, svString );
       while( nRc != END_OF_LIST &&
              StrCompare( svCurrentPath, "" ) = 0 )
           ParsePath( svCurrentPath, svString, PATH );
           nRc = ListGetNextString( listID, svString );
       endwhile;
       ListDestroy( listID );
       
       // substitute the current path by the right one if they are different
       svNewPath = TARGETDIR ^ "bin\\";
       if( StrCompare( svCurrentPath, "" ) != 0 &&
           StrCompare( svCurrentPath, svNewPath ) != 0 ) then
           listID = ListCreate( STRINGLIST );
           if( ListReadFromFile( listID, szFile ) = 0 ) then
               nRc = ListGetFirstString( listID, svString );
               while( nRc != END_OF_LIST )
                   // replace all ocurrences of the current path by the
                   // right one
                   pos = StrFind( svString, svCurrentPath );
                   while( pos >= 0 )
                       StrSub( svTmp, svString, 0, pos );
                       svTmp = svTmp + svNewPath;
                       nIndexDest = StrLength( svTmp );
                       nIndexSrc = pos + StrLength( svCurrentPath );
                       nCount = StrLength( svString ) - pos - StrLength( svCurrentPath );
                       CopyBytes( svTmp, nIndexDest,
                                  svString, nIndexSrc,
                                  nCount );
                       svString = svTmp;
                       ListSetCurrentString( listID, svString );
                       pos = StrFind( svString, svCurrentPath );
                   endwhile;
                   nRc = ListGetNextString( listID, svString );
               endwhile;
           endif;
           ListWriteToFile( listID, szFile );
           ListDestroy( listID );
       endif;
   endif;    
end;    


Hier ist ein bisschen mehr drin, als Du brauchst, aber Du musst die Textdatei in eine Liste auslesen und dann kannst Du Dir mit der Liste Deine Zeilen angucken und ggf. Ersetzungen vornehmen. Die Liste kannst Du dann in die zweite Datei schreiben.

Gruss
Rita