Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2011, 10:51   #1
NEoMASTERR
Форумчанин
 
Аватар для NEoMASTERR
 
Регистрация: 22.12.2010
Сообщений: 175
По умолчанию Не могу открыть textfile!!

Доброе утро, игра ведет логи в файлик, мне надо считать последнюю строчку
Код:
function TForm1.getlaststr: string;
var
  f: textfile;
begin
  assignfile(f,'D:\Games\COD4\main\games_mp.log');
  reset(f);
  while not eof(f) do readln(f,result);
  CloseFile(f);
end;
Выскакивает ошибка EInOutError ... 32 ...
Но через блокнот файл открывается спокойно! (akelpad,textpad) Подскажите в чем проблема
с 6 утра мучаюсь
Здравствуйте

Последний раз редактировалось mihali4; 11.11.2011 в 17:48.
NEoMASTERR вне форума Ответить с цитированием
Старый 11.11.2011, 10:59   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Попробуйте написать код таким образом
Код:
function TForm1.getlaststr: string;
var
  f: textfile;
t: string;
begin
  assignfile(f,'D:\Games\COD4\main\games_mp.log');
  reset(f);
  while not eof(f) do readln(f,t);
  result:=t;
  CloseFile(f);
end;
Вадим Мошев вне форума Ответить с цитированием
Старый 11.11.2011, 11:48   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Тогда лучше так сделать
Код:
function TForm1.getlaststr: string;
var
  f: TStringList;
begin
  f := TStringList.Create;
  f.LoadFromFile('D:\Games\COD4\main\games_mp.log');
  result := f.Strings[f.Count - 1];
  f.free;
end;
FaTaL вне форума Ответить с цитированием
Старый 11.11.2011, 11:53   #4
NEoMASTERR
Форумчанин
 
Аватар для NEoMASTERR
 
Регистрация: 22.12.2010
Сообщений: 175
По умолчанию



не катит
Здравствуйте

Последний раз редактировалось mihali4; 13.11.2011 в 02:53.
NEoMASTERR вне форума Ответить с цитированием
Старый 11.11.2011, 11:57   #5
NEoMASTERR
Форумчанин
 
Аватар для NEoMASTERR
 
Регистрация: 22.12.2010
Сообщений: 175
По умолчанию

вот функция пхп (вроде бы она). Она считывает с этого файла все отлично. Но беда в пхп я ноль

Код:
public function getNewLines() {
	    //clearstatcache();
	    if (filesize($this->logfile) < $this->logpos) {
	        //Return pointer if log file was deleted and recreated
	        $this->logpos = 0;
	        $GLOBALS['logging']->write(MOD_WARNING, "Filepointer was bigger than filesize");
	    }

		$fp = fopen($this->logfile, "r");
		fseek($fp, $this->logpos, SEEK_SET);

		$newlines = array();


		while (!feof($fp)) {
			$get = fgets($fp);
			if ($get === false) {
				break;
			}
			$this->logpos += strlen($get);
			$newlines[] = $get;
		}

		fclose($fp);

		return $newlines;
	}
Здравствуйте

Последний раз редактировалось mihali4; 11.11.2011 в 17:47.
NEoMASTERR вне форума Ответить с цитированием
Старый 11.11.2011, 12:13   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Учить мат-часть про режимы открытия файлов.

Код:
function TForm1.GetLastStr: String;
var
  Str: TStringList;
  FS: TFileStream;
begin
  Str := TStringList.Create;
  try
    FS := TFileStream.Create('D:\Games\COD4\main\games_mp.log', fmOpenRead or fmShareDenyNone);
    try
      Str.LoadFromStream(FS);
    finally
      FreeAndNil(FS);
    end;

    Result := Str[Str.Count - 1];
  finally
    FreeAndNil(Str);
  end;
end;
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 11.11.2011, 12:14   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Открыть файл с доступом только на чтение (например FileStream). Может не прокатить, если файл занят другой прогой и она не разрешает его читать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.11.2011, 12:20   #8
VAM
Пользователь
 
Аватар для VAM
 
Регистрация: 06.02.2011
Сообщений: 30
По умолчанию

Даст в присутствии данного параметра : fmShareDenyNone
« Amor Componentis Nos Unit »
VAM вне форума Ответить с цитированием
Старый 11.11.2011, 13:43   #9
NEoMASTERR
Форумчанин
 
Аватар для NEoMASTERR
 
Регистрация: 22.12.2010
Сообщений: 175
По умолчанию

Спасибо всем) помогло
Код:
function TForm1.GetLastStr: String;
var
  Str: TStringList;
  FS: TFileStream;
begin
  Str := TStringList.Create;
  try
    FS := TFileStream.Create('D:\Games\COD4\main\games_mp.log', fmOpenRead or fmShareDenyNone);
    try
      Str.LoadFromStream(FS);
    finally
      FreeAndNil(FS);
    end;

    Result := Str[Str.Count - 1];
  finally
    FreeAndNil(Str);
  end;
end;
Здравствуйте
NEoMASTERR вне форума Ответить с цитированием
Старый 13.11.2011, 02:04   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Даст в присутствии данного параметра : fmShareDenyNone
А попробовать в одной проге открыть с fmShareExclusive, а в другой с fmShareDenyNone и посмотреть какую ошибку выдаст
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу открыть файл tae1980 Microsoft Office Excel 9 15.01.2013 20:58
Не могу открыть порты. aszaszasz Помощь студентам 0 26.05.2010 14:27
Не могу открыть файл из-за размера! Ольга198 Microsoft Office Word 4 21.02.2009 07:07
Не могу открыть Word Mishina Помощь студентам 1 16.06.2008 12:44
не могу открыть ексель Kakha Microsoft Office Excel 2 05.02.2008 22:33