Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LoadFromFile по сети 
:(
    Опции темы
pethead
  Дата 16.9.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



пробую вот так забирать файл из расшаренной папки по сети. все работает. но...
если сеть не доступна или тот комп отключен от сети то на LoadFromFile программа просто виснет и через таймаут выходит из ожидания. в это время программа ни на что не отвечает. как сделать чтобы не было тормозов?
Application.ProcessMessages тут некуда вставлять.

Код

 sl:=TStringList.Create;
 try
 sl.LoadFromFile('\\MON13\PROJECTS\config.xml');
 ListBox1.Items.Assign(sl);
 sl.Free;
 except
  ShowMessage('ERROR!');
 end;


так же пробую строю на в программе tcp клиента и сервера, они коннектяться и переслыают файл, там коннект проще отследить, но напрягает само сетевое общение: установить коннект, передать, закрыть, гимор при потерях связи, перезагрузках, перезапусках.
думал 
 sl.LoadFromFile('\\MON13\PROJECTS\config.xml');
попроще будет, оно вон как себя ведет.
хотя конечно можно перед
 sl.LoadFromFile('\\MON13\PROJECTS\config.xml');
выполнить пинг удаленнго компа и если он пингуется то грузить файл


PM MAIL WWW ICQ   Вверх
Romikgy
Дата 16.9.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



так в чем вопрос то ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Keeper89
Дата 16.9.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 6
Всего: 58



Цитата(pethead @  16.9.2009,  11:30 Найти цитируемый пост)
как сделать чтобы не было тормозов?

вот в этом наверное smile

А вообще можно вот так проверить:
Код

  sl:=TStringList.Create;
  try
    if FileExists('\\MON13\PROJECTS\config.xml') then
    begin
      sl.LoadFromFile('\\MON13\PROJECTS\config.xml');
      ListBox1.Items.Assign(sl);
    end;
    sl.Free;
  except
    ShowMessage('ERROR!');
  end;


Это сообщение отредактировал(а) Keeper89 - 16.9.2009, 11:27


--------------------
PM MAIL WWW   Вверх
RomanEEP
Дата 17.9.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: нет
Всего: 8



Через потоки:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox: TListBox;
    Btn: TButton;
    procedure BtnClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TLoadThread = class(TThread)
  private
    FStrings: TStringList;
    FDest: TStrings;
    FFileName: string;
    procedure AssignDest;
    procedure ShowError;
  protected
    procedure Execute; override;
  public
    constructor Create(ADest: TStrings; const AFileName: string);
    destructor Destroy; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BtnClick(Sender: TObject);
begin
  TLoadThread.Create(ListBox.Items,
    '\\compname\docs\test.txt');
end;

{ TLoadThread }

procedure TLoadThread.AssignDest;
begin
  FDest.Assign(FStrings);
end;

constructor TLoadThread.Create(ADest: TStrings; const AFileName: string);
begin
  inherited Create(False);
  FStrings := TStringList.Create;
  FDest := ADest;
  FFileName := AFileName;
  FreeOnTerminate := True;
end;

destructor TLoadThread.Destroy;
begin
  FStrings.Free;
  inherited;
end;

procedure TLoadThread.Execute;
begin
  try
    FStrings.LoadFromFile(FFileName);
    Synchronize(AssignDest);
  except
    on EFOpenError do
      Synchronize(ShowError);
  end;
end;

procedure TLoadThread.ShowError;
begin
  MessageDlg(Format('Can not open file %s', [FFileName]), mtError, [mbOK], 0);
end;

end.


PM MAIL   Вверх
pethead
Дата 19.9.2009, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



FileExists('\\MON13\PROJECTS\config.xml')

эта хрень при отсутствии доступа к компу так же виснет в ожидании и программа не откликается

засунуть в поток тоже была смысль.



PM MAIL WWW ICQ   Вверх
Keeper89
Дата 19.9.2009, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 6
Всего: 58



У меня ничего не виснет, при отсутствии сети или файла - он просто не загружается.


--------------------
PM MAIL WWW   Вверх
kami
Дата 19.9.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(Keeper89 @  19.9.2009,  11:48 Найти цитируемый пост)
У меня ничего не виснет, 

Бывает такое. Подвисает на значительное время при определении сетевого имени. 
Причем - не зависит от того, через что идет обращение - explorer, TC, etc...
Почему - утверждать не буду.
PM MAIL WWW   Вверх
Keeper89
Дата 19.9.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 6
Всего: 58



Ну тогда можно действительно пинговать компьютер перед чтением файла.


--------------------
PM MAIL WWW   Вверх
Qu1nt
Дата 21.9.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 2
Всего: 50



Пинги могут блокироваться фаерволом. Чем вариант с потоком плох?!
PM MAIL   Вверх
Keeper89
Дата 21.9.2009, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 6
Всего: 58



Цитата(Qu1nt @  21.9.2009,  10:49 Найти цитируемый пост)
Чем вариант с потоком плох?! 

Это надо у автора спросить.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.