powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перенос файлов из сетевой папки в локальную службой
20 сообщений из 45, страница 2 из 2
Перенос файлов из сетевой папки в локальную службой
    #39786686
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из-под какой учетки запущена служба?
Если это localservice / localsystem, то эти учетки принципиально не имеют никаких прав для выхода в сеть. (Правда для localsystem есть одно исключение, но 99.99% это не Ваш случай).
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786695
warkdimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр СпелицинИз-под какой учетки запущена служба?
Если это localservice / localsystem, то эти учетки принципиально не имеют никаких прав для выхода в сеть. (Правда для localsystem есть одно исключение, но 99.99% это не Ваш случай).
служба из-под локальной учетки, она копирует в сеть, то есть права есть, но из сети не забирает
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786700
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

А может даже не в момент копирования вылетает из этой процедуры.
Угу. В этом месте нужно либо CheckOSError(CopyFile ()), либо if (CopyFile ()) then DeleteFile() else SysErrorMessage(GetLastError);

Ну и для отладки я бы натыкал запись в лог после каждого оператора. Тогда было бы видно, где возникает ошибка, на какой строке.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786708
warkdimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochwarkdimka
Код: sql
1.
2.
3.
4.
5.
 if FindFirst(config.ReadString('Settings', 'path', '0') + '*.xml', Attr, Sr) = 0 then //работа с каталогом (все пути указанны верно)
    repeat
      CopyFile(PChar(config.ReadString('Settings', 'path', '0')  + Sr.Name), PChar(config.ReadString('Settings', 'pathnetin', '0')+Sr.Name),false);
      DeleteFile(config.ReadString('Settings', 'path', '0')  + Sr.Name);
    until FindNext(Sr) <> 0;



Переменные? а что это такое???
Чем больше комьпютер тормозит - тем круче программа!
есть файл настроек, там пути прописываются сразу из него беру пути
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786713
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warkdimkaAriochпропущено...


Переменные? а что это такое???
Чем больше комьпютер тормозит - тем круче программа!
есть файл настроек, там пути прописываются сразу из него беру пути
Вам намекают на то, что лучше один раз прочитать путь из настроек в переменную, а потом её использовать, чем постоянно читать из файла настроек.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786714
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warkdimkaAriochпропущено...

Переменные? а что это такое???
Чем больше комьпютер тормозит - тем круче программа!
есть файл настроек, там пути прописываются сразу из него беру пути

ну и ответь, зачем ты ТРИ раза читаешь файл с диска, потом ТРИ раза ищешь в нём одно и то же место, ТРИ раза вырезаешь это место в переменную ?
а если между этими разами файл поменяется и ты получишь разный текст?

в любом случае - зачем делать медленно?

вызвал функцию - ОДИН раз - положи результат в переменную.
Потому используй этот результат, а не гоняй туда-обратно по 10 раз.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786715
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр СпелицинИз-под какой учетки запущена служба?
Если это localservice / localsystem, то эти учетки принципиально не имеют никаких прав для выхода в сеть. (Правда для localsystem есть одно исключение, но 99.99% это не Ваш случай).

ему сразу сказали - 21833546

бесполезно

Но ведь иногда-то работает? значит всегда работает.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786719
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45,

и это касается ЛЮБОЙ функции, хотя чтение файлов и поиск в нём - особенно

кстати, что функция (по сути, не по формальностям) PChar в данном случае почти бесплатна - это особенность Delphi. В других языках и она бы могла заниматься копированием данных например.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786722
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochИ обязательно прочитать статью 2010 года!
90% кода в интернете - говно
https://www.gunsmoker.ru/2010/05/90.html

...а потом переписать ВЕСЬ этот код начисто, с начала и до конца

Dixi
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786723
warkdimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochАлександр СпелицинИз-под какой учетки запущена служба?
Если это localservice / localsystem, то эти учетки принципиально не имеют никаких прав для выхода в сеть. (Правда для localsystem есть одно исключение, но 99.99% это не Ваш случай).

ему сразу сказали - 21833546

бесполезно

Но ведь иногда-то работает? значит всегда работает.
в сторону сети работает ВСЕГДА, из сети не работает
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786729
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warkdimka,

каким конкретно местом в коде ТЫ - не кто-то, а лично ты - ГАРАНТИРУЕШЬ что оно работает ?
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786732
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochГАРАНТИРУЕШЬ что оно работает ?

точнее, что оно _сработало_, в _каждом_ конкретном вызове.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786734
warkdimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochwarkdimka,

каким конкретно местом в коде ТЫ - не кто-то, а лично ты - ГАРАНТИРУЕШЬ что оно работает ?
работает, если с локальной папки передаем в сетевую. там 2 почти одинаковых куска кода (различие в путях). сколько объяснять можно?
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786739
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochкаким конкретно местом в коде

не надо словами

покажи конкретное место **в коде**, которое гарантирует, что функция отработала успешно

нет такого кода? это значит, что ТЫ никак не гарантируешь.
Ты просто играешь в спорт-лото.
Повезет - сработало.
Не повезло - да и хрен с ним.

Ну тогда и нормально все, нет проблемы. Ну не везет в половине случаев, зато в половине - повезло.




AriochAriochИ обязательно прочитать статью 2010 года!
90% кода в интернете - говно
https://www.gunsmoker.ru/2010/05/90.html

...а потом переписать ВЕСЬ этот код начисто, с начала и до конца

Dixi
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786742
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45then DeleteFile()
а если эта функция не отработала?

goldmi45SysErrorMessage(GetLastError);
raiselastwin32error - так проще

goldmi45запись в лог после каждого оператора
Можно. Но проще последовательность рабтоыс файлами снаружи посмотреть, через procmon
А потом уже всталвять подробный лог, но не везде, а только в районе ошибки.
Если вообще лог изнутри будет нужен, может быть по внешнему логу уже будет ясно.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786748
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochgoldmi45then DeleteFile()
а если эта функция не отработала?

и тоже нужно проверять результат работы.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786758
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45А может даже не в момент копирования вылетает из этой процедуры.

забыл написать, даже если скопировалось - не значит ,что скопировалось правильно.

у вас никогда не "бились" файлы в процессе копирования по сети?

а у меня бились, и SMB, и HTTP, и FTP
не часто - но бывает
Хотя не должно, TCP retransmit и все фигня.
Не должно, очень редко - и все же бывает.

поэтому желательно после копирования уже на той стороне проверять, что файл в процессе копирования не побился.

Т.е. схема вообще по другому выглядит.
На компе-источнике формируются файлы и контрольные хэши к ним (обычный MD5 или SHA2 или ещё что).

На компе-приёмнике программа копирует оба файла, данные и хэш, издали к себе и *локально* проверяет целостность.
Если совпало - тогда уже удаляет файл-источник.

Заодно прячется проблема "читать из сети можем, писать в сеть не можем".
Ну... почти прячется, удаление - тоже вид записи.

говно-код останется говно-кодом, но это видимо всех устраивает.

P.S. Ещё лучше вместо пары XML+MD5 просто клать XML в ZIP. Если там только XML и аналогичные файлы.
Гораздо быстрее прокопируется, и при распаковке проверка на целостность автоматически.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786768
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45Ariochпропущено...

а если эта функция не отработала?

и тоже нужно проверять результат работы.

обрати внимание (присмотрись к типам параметров), что CopyFile он взял из Windows, а DeleteFile октуда-то из другого места, скорее всего SysUtils

ergo
1. если в uses будут те жде модули в рдугом порядке - программа может перестать компилироваться
2. даже сейчас у CopyFile и DeleteFile разные конвенции сообщения про ошибку, и проверять это надо по-разному

но всё хорошо, прекрасная маркиза. Иногда же работает? значит код всегда правильный.
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786771
warkdimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochAriochкаким конкретно местом в коде

не надо словами

покажи конкретное место **в коде**, которое гарантирует, что функция отработала успешно

нет такого кода? это значит, что ТЫ никак не гарантируешь.
Ты просто играешь в спорт-лото.
Повезет - сработало.
Не повезло - да и хрен с ним.

Ну тогда и нормально все, нет проблемы. Ну не везет в половине случаев, зато в половине - повезло.




Код: 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.
Attr := faAnyFile - faVolumeID - faDirectory; //работает
nw.dwType := RESOURCETYPE_ANY; 
nw.lpLocalName := nil;
nw.lpRemoteName := сетевой путь;
nw.lpProvider := nil;
Err := WNetAddConnection2(nw, PChar(config.ReadString('Settings', 'netPass', '0')), PChar(config.ReadString('Settings', 'netUser', '0')), 0);

if FindFirst(локальный путь) + '*.xml', Attr, Sr) = 0 then //работа с каталогом (все пути указанны верно)
repeat
CopyFile(PChar(локальный путь) + Sr.Name), PChar(сетевой путь)+Sr.Name),false);
DeleteFile(локальный путь) + Sr.Name);
until FindNext(Sr) <> 0;


Attr := faAnyFile - faVolumeID - faDirectory; //НЕ работает
nw.dwType := RESOURCETYPE_ANY; 
nw.lpLocalName := nil;
nw.lpRemoteName := сетевой путь;
nw.lpProvider := nil;
Err := WNetAddConnection2(nw, PChar(config.ReadString('Settings', 'netPass', '0')), PChar(config.ReadString('Settings', 'netUser', '0')), 0);

if FindFirst(сетевой путь + '*.xml', Attr, Sr) = 0 then //работа с каталогом (все пути указанны верно)
repeat
CopyFile(PChar(локальный путь) + Sr.Name), PChar(сетевой путь)+Sr.Name),false);
DeleteFile(сетевой путь) + Sr.Name);
until FindNext(Sr) <> 0;


если и так не понятно, то хз. от тебя ни одного совета не увидел кроме как ссылки на статьи про говнокод
...
Рейтинг: 0 / 0
Перенос файлов из сетевой папки в локальную службой
    #39786784
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warkdimkaпропущено...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  Attr := faAnyFile - faVolumeID - faDirectory; //НЕ работает
  nw.dwType := RESOURCETYPE_ANY; 
  nw.lpLocalName := nil;
  nw.lpRemoteName := сетевой путь;
  nw.lpProvider := nil;
  Err := WNetAddConnection2(nw, PChar(config.ReadString('Settings', 'netPass', '0')), PChar(config.ReadString('Settings', 'netUser', '0')), 0);

  if FindFirst(сетевой путь + '*.xml', Attr, Sr) = 0 then //работа с каталогом (все пути указанны верно)
    repeat
      CopyFile(PChar(локальный путь) + Sr.Name), PChar(сетевой путь)+Sr.Name),false); // Копируете из локального (какого) каталога на сетевой (какой?)
      DeleteFile(сетевой путь) + Sr.Name);
    until FindNext(Sr) <> 0;



CopyFile MSDN
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перенос файлов из сетевой папки в локальную службой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]