<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=79211&amp;view=findpost&amp;p=574534</guid>
        <pubDate>Wed, 12 Jan 2005 19:59:32 +0000</pubDate>
        <title>Копирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=79211&amp;view=findpost&amp;p=574534</link>
        <description><![CDATA[Song: <div class="tag-mod"><div class="tag-mod__prefix">M</div><div class="tag-mod__body">Тема перенесена из Delphi FAQ -> <a class='tag-url' href='http&#58;//forum.sources.ru/index.php?showforum=62' target='_blank'>Системные функции, WinAPI, работа с железом</a></div></div>]]></description>
        <author>Song</author>
        <category>Работа с файлами, форматы файлов и данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=79211&amp;view=findpost&amp;p=573736</guid>
        <pubDate>Wed, 12 Jan 2005 10:54:01 +0000</pubDate>
        <title>Копирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=79211&amp;view=findpost&amp;p=573736</link>
        <description><![CDATA[x2er0: Тебе что, примеры нужны:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#39;in a form (Form1)</div><div class="code_line">Private Sub Form_Load()</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;KPD-Team 2001</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;URL: http://www.allapi.net/</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;E-Mail: KPDTeam@Allapi.net</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dim Ret As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;set the graphics mode to persistent</div><div class="code_line">&nbsp;&nbsp; &nbsp;Me.AutoRedraw = True</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;print some text</div><div class="code_line">&nbsp;&nbsp; &nbsp;Me.Print &quot;Click the form to abort the filecopy&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;show the form</div><div class="code_line">&nbsp;&nbsp; &nbsp;Me.Show</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;start copying</div><div class="code_line">&nbsp;&nbsp; &nbsp;Ret = CopyFileEx(&quot;c:\verybigfile.ext&quot;, &quot;c:\copy.ext&quot;, AddressOf CopyProgressRoutine, ByVal 0&amp;, bCancel, COPY_FILE_RESTARTABLE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;show some text</div><div class="code_line">&nbsp;&nbsp; &nbsp;Me.Print &quot;Filecopy completed &quot; + IIf(Ret = 0, &quot;(ERROR/ABORTED)&quot;, &quot;successfully&quot;)</div><div class="code_line">End Sub</div><div class="code_line">Private Sub Form_Click()</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;cancel filecopy</div><div class="code_line">&nbsp;&nbsp; &nbsp;bCancel = 1</div><div class="code_line">End Sub</div><div class="code_line">&#39;in a module</div><div class="code_line">Public Const PROGRESS_CANCEL = 1</div><div class="code_line">Public Const PROGRESS_CONTINUE = 0</div><div class="code_line">Public Const PROGRESS_QUIET = 3</div><div class="code_line">Public Const PROGRESS_STOP = 2</div><div class="code_line">Public Const COPY_FILE_FAIL_IF_EXISTS = &amp;H1</div><div class="code_line">Public Const COPY_FILE_RESTARTABLE = &amp;H2</div><div class="code_line">Public Declare Function CopyFileEx Lib &quot;kernel32.dll&quot; Alias &quot;CopyFileExA&quot; (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As Long, lpData As Any, ByRef pbCancel As Long, ByVal dwCopyFlags As Long) As Long</div><div class="code_line">Public bCancel As Long</div><div class="code_line">Public Function CopyProgressRoutine(ByVal TotalFileSize As Currency, ByVal TotalBytesTransferred As Currency, ByVal StreamSize As Currency, ByVal StreamBytesTransferred As Currency, ByVal dwStreamNumber As Long, ByVal dwCallbackReason As Long, ByVal hSourceFile As Long, ByVal hDestinationFile As Long, ByVal lpData As Long) As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;adjust the caption</div><div class="code_line">&nbsp;&nbsp; &nbsp;Form1.Caption = CStr(Int((TotalBytesTransferred * 10000) / (TotalFileSize * 10000) * 100)) + &quot;% complete...&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;allow user input</div><div class="code_line">&nbsp;&nbsp; &nbsp;DoEvents</div><div class="code_line">&nbsp;&nbsp; &nbsp;&#39;continue filecopy</div><div class="code_line">&nbsp;&nbsp; &nbsp;CopyProgressRoutine = PROGRESS_CONTINUE</div><div class="code_line">End Function</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Delphi doesn&#39;t supply a &quot;CopyFile&quot; routine, but you can just call the</div><div class="code_line">Windows API CopyFile function instead</div><div class="code_line">&nbsp;</div><div class="code_line">Here&#39;s an example - this one copies the file, even if the target file</div><div class="code_line">already exists. &nbsp;Note that file date, time and attributes are unchanged.</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; If not CopyFile(PChar(SourceName),PChar(TargetName),False) then</div><div class="code_line">ShowMessage(&#39;Error copying file&#39;);</div><div class="code_line">&nbsp;</div><div class="code_line">There are many other ways to copy a file (see the list below) but the one</div><div class="code_line">above is easiest and fastest (at least fastest of the ones I tested when I</div><div class="code_line">was looking for a high performing way to copy large files across a network).</div><div class="code_line">&nbsp;</div><div class="code_line">If you are copying a large file across a network, then you might like to</div><div class="code_line">show a progress bar - there are some good examples at the Swiss Delphi</div><div class="code_line">Centre at http://www.swissdelphicenter.ch/en/showcode.php?id=330</div><div class="code_line">&nbsp;</div><div class="code_line">These routines mostly use BlockRead and write, so they don&#39;t perform as well</div><div class="code_line">as the basic Windows Copy function.</div><div class="code_line">&nbsp;</div><div class="code_line">If you are running on Windows NT, 2K or XP, then the best performing way</div><div class="code_line">that I was able to find to copy a file with a ProgressBar is to use the</div><div class="code_line">Windows CopyFileEx API call &nbsp;- see example at end.</div><div class="code_line">&nbsp;</div><div class="code_line">Hope this helps.</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">Other examples from my (mostly very old) notes - I&#39;m sure all of these can</div><div class="code_line">be improved - I was even more of a novice when I researched all these.</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">COPYING FILES. &nbsp;How to copy files in Delphi - see Article #15910: Technical</div><div class="code_line">Information Database - plus my notes. I was testing over a 10 mbps LAN using</div><div class="code_line">relatively slow machines when these notes were written - a while back.</div></ol></div></div></div></div><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">1. &nbsp;Method using a File stream.</div><div class="code_line">Note: Date/time of new file is now! Need extra code to preserve old</div><div class="code_line">date/time.</div><div class="code_line">No error handling; Delphi finds errors and writes an error box, cancelling</div><div class="code_line">the application, eg if the source file does not exist. Console applications</div><div class="code_line">just halt.</div><div class="code_line">Tested and works. Get c. 600-830 kB/sec over 10 Meg E&#39;net. Average-750,000</div><div class="code_line">Bytes/sec.</div><div class="code_line">Procedure FileCopy( Const SourceFn, TargetFn : String );</div><div class="code_line">Var &nbsp;S, T: TFileStream;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; SourceHand, DestHand: Integer;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp;S := TFileStream.Create( SourceFn, fmOpenRead );</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;T := TFileStream.Create( TargetFn, fmOpenWrite or fmCreate );</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;T.CopyFrom(S, S.Size ) ;</div><div class="code_line">&nbsp;&nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;T.Free;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;S.Free;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">{Now set the new file&#39;s date/time to that of the source }</div><div class="code_line">&nbsp;&nbsp;SourceHand := FileOpen(SourceFn, fmOpenRead); &nbsp;{ open source file }</div><div class="code_line">&nbsp;&nbsp;DestHand := FileOpen(TargetFn, fmOpenWrite); &nbsp; { open dest file }</div><div class="code_line">&nbsp;&nbsp;FileSetDate(DestHand, FileGetDate(SourceHand));{ get/set date }</div><div class="code_line">&nbsp;&nbsp;FileClose(SourceHand); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { close source file }</div><div class="code_line">&nbsp;&nbsp;FileClose(DestHand); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { close dest file }</div><div class="code_line">end; { Procedure FileCopy }</div><div class="code_line">&nbsp;</div><div class="code_line">2. Method using memory blocks for read/write.</div><div class="code_line">Note: Brief test.. Does not preserve file time (as method 1.) Rate = c. 750</div><div class="code_line">kB/sec</div><div class="code_line">Procedure FileCopy( Const SourceFn, TargetFn : String );</div><div class="code_line">&nbsp;var</div><div class="code_line">&nbsp;&nbsp;FromF, ToF: file;</div><div class="code_line">&nbsp;&nbsp;NumRead, NumWritten: Integer; &nbsp;{Integer= 4 bytes.}</div><div class="code_line">&nbsp;&nbsp;Buf: array[1..2048] of Char;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;AssignFile(FromF, SourceFn);</div><div class="code_line">&nbsp;&nbsp;Reset(FromF, 1);{ Record size = 1 }</div><div class="code_line">&nbsp;&nbsp;AssignFile(ToF, TargetFn);{ Open output file }</div><div class="code_line">&nbsp;&nbsp;Rewrite(ToF, 1);{ Record size = 1 }</div><div class="code_line">&nbsp;&nbsp;repeat</div><div class="code_line">&nbsp;&nbsp; &nbsp;BlockRead(FromF, Buf, SizeOf(Buf), NumRead);</div><div class="code_line">&nbsp;&nbsp; &nbsp;BlockWrite(ToF, Buf, NumRead, NumWritten);</div><div class="code_line">&nbsp;&nbsp;until (NumRead = 0) or (NumWritten &#60;&#62; NumRead);</div><div class="code_line">&nbsp;&nbsp;CloseFile(FromF);</div><div class="code_line">&nbsp;&nbsp;CloseFile(ToF);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">3. Method using LZCopy. &nbsp; &nbsp;(Must specify Uses LZExpand &nbsp; Date/time</div><div class="code_line">preserved. }</div><div class="code_line">Note: Time error when copying from WinNT to Win95. Must use code from</div><div class="code_line">example 1 to correct the time of the target.</div><div class="code_line">Procedure FileCopy( Const SourceFn, TargetFn : String ); &nbsp; Note: This code</div><div class="code_line">did not run on WinXP??? - Oct03.</div><div class="code_line">var &nbsp; FromFile, ToFile: File;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;AssignFile(FromFile, SourceFn); { Assign FromFile to SourceFn }</div><div class="code_line">&nbsp;&nbsp;AssignFile(ToFile, TargetFn); &nbsp; { Assign ToFile to TargetFn }</div><div class="code_line">&nbsp;&nbsp;Reset(FromFile); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ Open file for input }</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;Rewrite(ToFile); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ Create file for output }</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;{ copy the file and if a negative value is returned raise an</div><div class="code_line">exception }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) &#60; 0</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;then raise EInOutError.Create(&#39;Error using LZCopy&#39;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;CloseFile(ToFile); &nbsp;{ Close ToFile }</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;CloseFile(FromFile); &nbsp;{ Close FromFile }</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end; {-------------- Procedure FileCopy -----------------------------}</div></ol></div></div></div></div><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">4. Example with ProgressBar. &nbsp; (I get up to 11MBytes/sec with this routine</div><div class="code_line">across a 100 Mbps Ethernet).</div><div class="code_line">&nbsp;</div><div class="code_line">This example uses Windows COPYFILEEX. &nbsp; &nbsp;This copies with a progressbar.</div><div class="code_line">&nbsp;It works fine and is the fastest yet with progressbar. &nbsp;I adapted this one</div><div class="code_line">from some code I found on a French Delphi Web site at</div><div class="code_line">http://www.delphifr.com/code.aspx?ID=12315 - many thanks to Nicolas Sorel.</div><div class="code_line">Translation is mine!</div><div class="code_line">&nbsp;</div><div class="code_line">----------------------------------------------------------------------------</div><div class="code_line">---}</div><div class="code_line">&nbsp;</div><div class="code_line">Function CopyCallBack(</div><div class="code_line">&nbsp;&nbsp; &nbsp;TotalFileSize: LARGE_INTEGER; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Total size of the file in</div><div class="code_line">bytes</div><div class="code_line">&nbsp;&nbsp; &nbsp;TotalBytesTransferred: LARGE_INTEGER; &nbsp;// No bytes already transferred.</div><div class="code_line">&nbsp;&nbsp; &nbsp;StreamSize: LARGE_INTEGER; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Total file size</div><div class="code_line">&nbsp;&nbsp; &nbsp;StreamBytesTransferred: LARGE_INTEGER; // No bytes already transferred</div><div class="code_line">&nbsp;&nbsp; &nbsp;dwStreamNumber: DWord; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Number of the stream</div><div class="code_line">&nbsp;&nbsp; &nbsp;dwCallbackReason: DWord; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Reason for the call back.</div><div class="code_line">&nbsp;&nbsp; &nbsp;hSourceFile: THandle; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Source handle.</div><div class="code_line">&nbsp;&nbsp; &nbsp;hDestinationFile: THandle; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Destination handle.</div><div class="code_line">&nbsp;&nbsp; &nbsp;ProgressBar : TProgressBar &nbsp; &nbsp; // Parameter passed to the function which</div><div class="code_line">is</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // a recopy of the parameter passed with</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // CopyFileEx. &nbsp;It is used to pass the</div><div class="code_line">address</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // of progress bar to be updated for the</div><div class="code_line">copy.</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // It is an excellent idea of DelphiProg.</div><div class="code_line">&nbsp;&nbsp; &nbsp;): DWord; far; stdcall;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp; &nbsp;EnCours: Int64;</div><div class="code_line">begin</div><div class="code_line">&nbsp;// Calculate progressbar position as a percent. &nbsp;The calculation must be</div><div class="code_line">&nbsp;// performed using an intermediate variable of type Int64, to avoid</div><div class="code_line">overflow</div><div class="code_line">&nbsp;// of calculation in the property Position of the integer type.</div><div class="code_line">&nbsp;// &nbsp; BB Note - look up LARGE_INTEGER to see what Quadpart is.</div><div class="code_line">&nbsp;&nbsp; &nbsp;EnCours := TotalBytesTransferred.QuadPart*100 div</div><div class="code_line">TotalFileSize.QuadPart;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ProgressBar&#60;&#62;Nil then ProgressBar.Position := EnCours;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// The function must determine whether the copy can be continued.</div><div class="code_line">&nbsp;&nbsp; &nbsp;Result := PROGRESS_CONTINUE;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Application.ProcessMessages; &nbsp;// Allow processing of messages.</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">{---Function FILECOPY: New Version (Nov03) using CopyFileEx.----------}</div><div class="code_line">{ &nbsp;If BAR is true a progressbar is shown. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div class="code_line">Function FileCopy(Const SourceFn, TargetFn : String; Bar : Boolean ):</div><div class="code_line">Boolean;</div><div class="code_line">Var I : Integer; Retour: LongBool;</div><div class="code_line">begin</div><div class="code_line">&nbsp;Result:=True; &nbsp; &nbsp;// Default result - copy OK.</div><div class="code_line">&nbsp;If (Win32Platform = Ver_Platform_Win32_NT) and Bar</div><div class="code_line">&nbsp;then begin { BAR wanted - but only possible on WinNT, 2000 or XP }</div><div class="code_line">&nbsp;&nbsp; Form1.ProgressBar1.Visible:=True; &nbsp; // Show progressbar only during copy.</div><div class="code_line">&nbsp;&nbsp; Retour := False; &nbsp; &nbsp; &nbsp; // NB CopyFileEx only works on WinNT,2k or XP.}</div><div class="code_line">&nbsp;&nbsp; if not CopyFileEx(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;PChar(SourceFn), &nbsp; &nbsp;// Source file name</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;PChar(TargetFn), &nbsp; &nbsp;// Target file name.</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;@CopyCallBack, &nbsp; &nbsp; &nbsp;// Address of callback function</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Form1.ProgressBar1, // ProgressBar to be updated.</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;@Retour, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Address of Boolean tested to stop the copy</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Don&#39;t specify &quot;can be restarted&quot; or &quot;only if</div><div class="code_line">not exists&quot;</div><div class="code_line">&nbsp;&nbsp; then Result:=False;</div><div class="code_line">&nbsp;end else begin</div><div class="code_line">&nbsp;&nbsp;---code to perform copy without progressbar.---</div><div class="code_line">&nbsp;end;</div><div class="code_line">end; {---Procedure FileCopy-----}</div></ol></div></div></div></div><br>
+ http://www.delphifr.com/code.aspx?ID=12315<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Эта тема была разделена из темы &quot;<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=78812' target='_blank'>Копирование, удаление файлов и папок</a>&quot;</span></span>]]></description>
        <author>x2er0</author>
        <category>Работа с файлами, форматы файлов и данных</category>
      </item>
	
      </channel>
      </rss>
	