Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Обрабатывать каждый файл в папке Delphi XE

Как, в данный кусок кода, добавить возможность: обрабатывать не один файл, а все файлы что находятся в папке и подпапках. Сейчас обрабатывает только один файл. Друзья - Помогите решить задачу!
    var
        SynArr: Array of Array of String;
          VocFile,SrcFile,DstFile: TextFile;
          TxtLine: String;
          SynList: TStringList;
        begin
         AssignFile(VocFile, OpenDialog2.FileName);
         Reset(VocFile);
         SetLength(SynArr, 0);
         SynList := TStringList.Create;
         while not Eof(VocFile)
         do begin
            ReadLn(VocFile, TxtLine);
            SynList.Text := StringReplace(WrapText(TxtLine,#13#10,['|'],1),'|','',[rfReplaceAll]);
            SetLength(SynArr, Length(SynArr)+1);
            SetLength(SynArr[High(SynArr)],SynList.Count);
            for i := 0 to SynList.Count - 1
            do SynArr[High(SynArr),i] := SynList.Strings[i];
            end;
         SynList.Free;
         CloseFile(VocFile);
     
         AssignFile(SrcFile, OpenDialog3.FileName);
         Reset(SrcFile);
     
         AssignFile(DstFile, OpenDialog4.FileName);
         Rewrite(DstFile);
         while not Eof(SrcFile)
         do begin
            ReadLn(SrcFile, TxtLine);
            for i := 0 to High(SynArr)
            do for j := 0 to High(SynArr[i])
               do TxtLine := StringReplace(TxtLine,SynArr[i,j],SynArr[i,Random(High(SynArr[i]))+1],[]);
            WriteLn(DstFile, TxtLine);
            end;
         CloseFile(DstFile);
         CloseFile(Srcfile);
        end;
Ответ:
Цитата ^D^ima @
Ты раздели отдельно функцию которая будет на вход получать имя файла, и обрабатывать. Засунь вызов этой функции\процедуры внутри обхода папок.
Благодарю, но пока что еще не разобрался, попытаюсь сделать.
Вопрос: Обрабатывать каждый файл в папке Delphi XE

Как, в данный кусок кода, добавить возможность: обрабатывать не один файл, а все файлы что находятся в папке и подпапках. Сейчас обрабатывает только один файл. Друзья - Помогите решить задачу!
Код:

var
    SynArr: Array of Array of String;
      VocFile,SrcFile,DstFile: TextFile;
      TxtLine: String;
      SynList: TStringList;
    begin
     AssignFile(VocFile, OpenDialog2.FileName);
     Reset(VocFile);
     SetLength(SynArr, 0);
     SynList := TStringList.Create;
     while not Eof(VocFile)
     do begin
        ReadLn(VocFile, TxtLine);
        SynList.Text := StringReplace(WrapText(TxtLine,#13#10,['|'],1),'|','',[rfReplaceAll]);
        SetLength(SynArr, Length(SynArr)+1);
        SetLength(SynArr[High(SynArr)],SynList.Count);
        for i := 0 to SynList.Count - 1
        do SynArr[High(SynArr),i] := SynList.Strings[i];
        end;
     SynList.Free;
     CloseFile(VocFile);
 
     AssignFile(SrcFile, OpenDialog3.FileName);
     Reset(SrcFile);
 
     AssignFile(DstFile, OpenDialog4.FileName);
     Rewrite(DstFile);
     while not Eof(SrcFile)
     do begin
        ReadLn(SrcFile, TxtLine);
        for i := 0 to High(SynArr)
        do for j := 0 to High(SynArr[i])
           do TxtLine := StringReplace(TxtLine,SynArr[i,j],SynArr[i,Random(High(SynArr[i]))+1],[]);
        WriteLn(DstFile, TxtLine);
        end;
     CloseFile(DstFile);
     CloseFile(Srcfile);
    end;

Ответ:
Цитата:
Вроде бы тут ещё нужно проверку:
Я в листе смотрел все нормально отображает папки + файлы, поэтому проверку не делал


Цитата:
ага.
просто автор уже использует аналогичный код.
Понятно.
Я просто дополнил его код, чтобы автор если что под себя допилил
Вопрос: Как обращаться ко всем файлам папки по очереди?

В общем проблема такая - слил 2 папки с фотками, они оказались одинаковыми - в результате все файлы продублировались - в папке остался каждый файл с оригинальным именем и скопировался файл с оригинальным именем + (2). Фоток очень много, вручную удалять долго. Как проверить каждый файл в папке и при наличии у него в имени "(2)" удалить?
Ответ:
Сообщение от qwertehok
открывайте тотал и нажмите "+", далее выберите маску выделяемых файлов *(2).jpg
Задал маску просто в поиске папки - сработало)
Вопрос: Как указать расположение pas-файлов в Delphi 2010?

Добрый день! Возникла такая проблема. В моем проекте используются несколько pas-файлов, который находится на несколько папок выше проекта. Delphi 2010 их эти файлы не видит, как это можно исправить, не закидывая эти файлы в один каталог с проектом? В Delphi 7, такой проблемы не было, как исправить не знаю(Delphi 2010, используется для 3-х мерных графиков). Заранее спасибо!
Ответ: Добавьте их просто в проект и всех делов. Не в папку проекта, а именно в проект.
Вопрос: Каждому файлу doc свой пароль

Добрый день! Есть папка с файлами doc. (ФИО1.doc, ФИО2.doc и т.д.) Возможно ли средствами vba перебрать все файлы и поставить каждому файлу свой пароль на открытие. Файлы будут меняться каждый месяц, но название будут такие же и пароль должен быть одинаковый в каждом месяце.
Открыть и поставить пароль на все файлы одинаковый вроде так.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub кол_вх()
Dim s As String, fldr As String
fldr = "c:\Входящие\"
s = Dir(fldr & "*.xls")
Do While s <> ""
    With Workbooks.Open(fldr & s)
       ActiveDocument.Protect wdAllowOnlyFormFields, True, Password:="123"
        .Close
    End With
    s = Dir
Loop
End Sub
С какой стороны подойти к этой задаче?
Если разные пароли ставить надо начинать со списка ФИО1.doc - пароль1, ФИО2.do -пароль2 и т.д.? Есть в EXEL список:
название+гиперссылка+путь

С vba только 3 дня знакомлюсь, не программист по образованию , так что не судите строго.
Спасибо.
Ответ: Возможно ли решение моей задачи по этому пути?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Dim allbore As Range ' здесь будет храниться диапазон файлов
Dim borename As New Collection ' это набор файлов
Dim alldata As Collection   ' это набор паролей
 
 
Sub Find()
    Set allbore = Range("A:A") ' выбрать колонку
    ' только с данными
    Set allbore = Range(allbore.Columns.End(xlUp).Address, allbore.Columns.End(xlDown).Address)
    allbore.Select          ' выделить
    For Each bore In allbore    ' бежим по диапазону файлов
        bore.Select         ' выделяем ячейку
        borename.Add (bore.Value)   ' добавить к коллекцию
    Next bore
End Sub
 
Sub SelectBore(s As String)
    Set alldata = New Collection
    For Each bore In allbore ' бежим по диапазону файлов
        bore.Select  ' выделяем ячейку
        If bore.Value = s Then  ' если это та скважина
            ActiveCell.Offset(0, 1).Select ' вправо
            alldata.Add (ActiveCell.Value) ' поместить в коллекцию
        End If
    Next bore
End Sub
Вопрос: Поиск и удаление файлов средствами delphi

Приветствую всех!
Есть задача:
На диске C: найти файл samantha is gonna kill you.mp3 и его удалить, и нужно делать программно.
Подскажите пожалуйста, как это решить с помощью Delphi?
Ответ: jonikster, вы понимаете что в одном каталоге может быть только один файл с определенным именем?
тогда зачем
Сообщение от jonikster
и все подобные файлы с таким названием, елси такие существуют.
код для удаления я вам дал
код для поиска вам дали
что же еще надо?
Вопрос: Файл в Delphi 7

Есть файл в который выводятся данные. Как сделать чтоб эти данные можно было просмотреть/редактировать
только в программе?
---------------------------------------------
Заранее спасибо
Ответ: это вы у телепатов спрашиваете?
покажите файл, покажите программу
Вопрос: Запрет записи на флешку выбранных файлов(папок)

Здравствуйте! В ходе лабораторной работы стало нужным запретить пользователю выбранные файлы(папки) записывать на флешку. При этом остальные файлы копировать можно. Решается ли проблема не изменением свойства файла(запрет копирования всё-таки только на флешку)? Помогите пожалуйста советом
Ответ: Для начало надо определить флешку в системе..
Перебирать какие диски в системе есть,за тем если флешка есть,искать нужные файлы в системе и ставить свойства запрета..
Вообщем создание и распространение зловредного программного обеспечения преследуется законом ..
Стать 273 ук рф..
Вопрос: Найти максимальные значения в каждом файле

Помогите исправить программу.

Ввести два файла F1, F2. Найти максимальные значения в каждом файле. В каждом файле заменить компоненты, расположенные по-сле максимального, на значение максимума другого файла. Файлы отпечатать. Подпрограммы: ввод файла, поиск максимума и его местоположения, преобразование файла, вывод файла.

Код Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
program zd1;
var
 F1: file of integer;
F2: file of integer;
b1,b2,max1,max2,p1,p2,p:integer;
 
 Procedure vvod (var g:file of integer);
   var c:integer;
   begin
    writeln('Ввод файла');
     rewrite(g);
    readln(c);
    while c<>12345 do
     begin
       write(g,c);
       readln(c);
     end;
    close(g);
    end;
    
procedure poiskmax(var h:file of integer;var max,p:integer);
 var b:integer;
   begin 
    reset(h);
      max:=b;
     while NOT EOF(h) do
    begin
    read(h,b);
    if b>max then
     max:=b;
     p:=filepos(h);
     end;
     writeln('p= ',p);
   close(h);
   
   end; 
   
procedure zamena(var h:file of integer;b:integer);
   begin
   reset(h);
    while NOT EOF(h) do
    read(h,b);
    begin
      seek(h,p+1);
      write(h,b);
      end;
    close(h)
   end;
   
   Procedure vivod(f:file of integer);
   var b:integer;
   begin
   writeln('Вывод файла');
   reset(F);
     while NOT EOF(F) do
     begin
     read(F,b);
     writeln(b);
     end;
   close(F);
   end;
 
begin   
   assign(f1,'f1.dat');
   assign(f2,'f2.dat');
   vvod (f1);
   vvod (f2);
    poiskmax(f1,max1,p1);
   writeln('b1= ,p1= ',max1,p1);
   poiskmax (f2,max2,p2);
   writeln('b2= ,p2= ',max2,p2);
   zamena(f1,b2);
   zamena(f2,b1);
   vivod(f1);
   vivod(f2);
end.
Ответ: Помогите исправить программу.

Код Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
program zd1;
var
 F1: file of integer;
F2: file of integer;
b1,b2,max1,max2,p1,p2,p:integer;
 
 Procedure vvod (var g:file of integer);
   var c:integer;
   begin
    writeln('Ввод файла');
     rewrite(g);
    readln(c);
    while c<>12345 do
     begin
       write(g,c);
       readln(c);
     end;
    close(g);
    end;
    
    
   procedure poiskmax(var h:file of integer;var max,p:integer);
var b:integer;
begin
    
    reset(h);
    read(h,b);
        p:=1; 
    max:=b;
 
    while NOT EOF(h) do
      begin
        read(h,b);
        if b>max then begin
           max:=b;
           p:=filepos(h);
        end; 
     end;
     writeln('p= ',p);
      writeln('max= ',max);
   close(h);
end;
 
 procedure zamena(var h:file of integer; p,max:integer);
  var b:integer;
  begin
    
    reset(h);
    seek (h,p);
    
    begin;
    while Not EOF(h) do
   
    write(h, p,max);
    end;
    close(h)
   end;
    
 
   
   Procedure vivod(f:file of integer);
   var b:integer;
   begin
   writeln('Вывод файла');
   reset(F);
     while NOT EOF(F) do
     begin
     read(F,b);
     writeln(b);
     end;
   close(F);
   end;
 
begin   
   assign(f1,'f1.dat');
   assign(f2,'f2.dat');
   vvod (f1);
   vvod (f2); 
poiskmax(f1,p1,max1);
   writeln('p1= ','max1= ',max1, p1);
  
   poiskmax(f2,p2,max2);
   writeln('p2= ','max2= ',max2, p2);
 
 
 
   zamena(f1,p1,max2);
   zamena(f2,p2,max1);
   vivod(f1);
   vivod(f2);
end.   
Вопрос: Передавать файлы через delphi

Как на delphi сделать чтобы программа сбрасывала файл на другой комп по сети интернет в определенную папку. Или наоборот чтобы тот комп забирал в эту папку файл. Типа клиент-сервер. Хочу сделать сеть с сервером, и несколькими клиентами, которые передают ему файлы по нету.
Ответ:
Сообщение от studenti
по сети интернет
Сообщение от northener
Типа клиент-сервер
и купит белый IP