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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа *.TXT, Почему ошибка 
:(
    Опции темы
ivan219
Дата 13.1.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вот моя программа.

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, DBTables, StdCtrls;

type
  TForm1 = class(TForm)
    Table1: TTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
   F: TextFile;
   S:String[20];
   C:String[20];
begin
   Table1.Open;
   AssignFile(F,'a.txt');
   Reset(F);
   try
     while not Eof(F) do
      begin
       Readln(F,S,C);
       Table1.Insert;
       Table1['State_Name'] := S;
       Table1['State_Capital'] :=C;
      end;
   finally
    CloseFile(F);
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.EmptyTable;
end;
end.


А вто сообщение которое выскакивает при компиляции и запуске программы компиляция при этом проходит без ошибок.


user posted image
PM MAIL ICQ   Вверх
Albinos_x
Дата 13.1.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



было бы не плохо указать строчку в какой возникает ошибка....
Код

procedure TForm1.Button1Click(Sender: TObject);    
var    
   F: TextFile;    
   S:String[20];    
   C:String[20];
   fs:string;    
begin    
   fs:=ExtractFilePath(Application.ExeName)+'a.txt';
   Table1.Open;    
   if not FileExist(fs) then exit;
   AssignFile(F,fs);           
   try    
    Reset(F);
     while not Eof(F) do    
      begin    
       Readln(F,S);
       Readln(F,C);
       Table1.Append;    
       Table1.fieldbyname('State_Name').asstring := S;    
       Table1.fieldbyname('State_Capital').asstring :=C;
       Table1.Post;    
      end;    
   finally    
    CloseFile(F);    
   end;    
end;


Это сообщение отредактировал(а) Albinos_x - 13.1.2006, 23:23


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
ivan219
Дата 13.1.2006, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Компилится он без ошибки Ctrl+F9 а когда с выполнением просто F9 то ошибка.


user posted image
Добавлено @ 23:33
Возможно я чегото не укозал в свойствах Table1 smile
PM MAIL ICQ   Вверх
Albinos_x
Дата 13.1.2006, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(ivan219 @ 13.1.2006, 23:25 Найти цитируемый пост)

Компилится он без ошибки Ctrl+F9 а когда с выполнением просто F9 то ошибка.

а таблица-то есть,? то есть существует и подключена...
Добавлено @ 23:43
процедура:
Код

Table1.EmptyTable;

удаляет из таблицы все записи сохраняя её структуру...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Quadr0
Дата 14.1.2006, 00:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 09:46
  Вверх
Albinos_x
Дата 14.1.2006, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(Quadr0 @ 14.1.2006, 00:02 Найти цитируемый пост)

Если это в блоке Try Except, то убедись, что все строки файла имеют длину, меньшую 20 или вообще сними это ограничение и используй AnsiString.

у него ошибка не при работе с файлом, а при работе с базой данных в строках:
Цитата(ivan219 @ 13.1.2006, 22:52 Найти цитируемый пост)

procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.EmptyTable;
end;

скорее всего у него БД не подключена или файла нет...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
ivan219
Дата 14.1.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Сам фаил есть лежит вместе с прогой в одной папке это фаил a.txt в котором всего

asd asd
qwe qwe

это я тест делал.

Но возможно я чтото и не доделал smile

Может подскажете smile
PM MAIL ICQ   Вверх
Albinos_x
Дата 14.1.2006, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



может так стоит сделать:
Код

procedure TForm1.FormCreate(Sender: TObject); 
var sf:PAnsiChar;
begin 
sf:=PChar(ExtractFilePath(Application.ExeName)+'a.txt');
if (FileExists(sf)) then
   begin
   Table1.Active:=false;
   Table1.TableName:=sf;
   Table1.Active:=true;
   Table1.EmptyTable; 
   end
   else
   begin
   Table1.Active:=false;
   Table1.TableName:=sf;
   Table1.TableType:=ttParadox;
   with Table1.FieldDefs do
        begin
        clear;
        Add('State_Name',ftString,21,false);
        Add('State_Capital',ftString,21,false);
        end;
   Table1.CreateTable;
   Table1.Open;
   Table1.Active:=true;
   end;
end;



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
ivan219
Дата 14.1.2006, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Всё окончательно за парка блин smile руки уменя неотуда растут.
Бросаю.

Вобщем что мне надо: Edit1 - внего будет вводится информация которую надо найти в 1 столбе или Edit2 - внего будет вводится инаормация которую надо найти в 2 столбе файла a.txt и соответственно надо вы вести на остальные 5 Edit то что находится в этой строке в сего столбов 6 и Edit тоже 6 строк 4000 штук.

Помогите smile

Это сообщение отредактировал(а) ivan219 - 14.1.2006, 01:26
PM MAIL ICQ   Вверх
Albinos_x
Дата 14.1.2006, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(ivan219 @ 14.1.2006, 01:05 Найти цитируемый пост)

Вобщем проект который я хотел зделать, имеется фаил *.txt в нём инфа разбита на столбики я нашол премер который был выше но ведать там чтото не договорили и вот одни ошибки там премер был именно работа с *.txt и не коких библиотек.

кидай мне на мыло [erase] я посмотрю...
Цитата(ivan219 @ 14.1.2006, 01:05 Найти цитируемый пост)

Ладно может тогда подскажете как можно найти определённую строку в водя определённое слово которое находится в этой строке.

Код

function FindTextFile(F: TextFile;FindStr:String; var index:integer):string;
var s:string;
      b:boolean;
begin
result:='';
index:=-1;
b:=true;
try
Reset(f);
while not EOF(F) do
   begin
   ReadLn(f,S);
   inc(index);
   if pos(FindStr,S)>0 then
      begin
      b:=false;
      Result:=s;
      Break;
      end;
    end;
finally
   if b then i:=-1;
   CloseFile(F);
  end;
end;

Добавлено @ 01:28
за забыл сказать функция вернёт найденную строку, Index будет равен номеру строки в файле начиная от 0, если произошла ошибка или строка не найдена index будет равным -1.

Это сообщение отредактировал(а) Albinos_x - 14.1.2006, 02:24


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
ivan219
Дата 14.1.2006, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Я не успел изменить с вой пост а ты уже аответил smile
Я его изменил.
PM MAIL ICQ   Вверх
Albinos_x
Дата 14.1.2006, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(ivan219 @ 14.1.2006, 01:05 Найти цитируемый пост)

которую надо найти в 1 столбе или Edit2 - внего будет вводится инаормация которую надо найти в 2 столбе файла a.txt

Код

{функция вернёт всю строку, 
Index будет равен номеру строки в файле начиная от 0, если произошла ошибка или строка не найдена index будет равным -1
len -количество символов в строке столбца
Num - номер столбца в котором искать от 1}
function FindTextFile(F: TextFile;FindStr:String;Len,Num:integer; var index:integer):string;    
var s:string;    
      b:boolean;    
begin    
result:='';    
index:=-1;    
b:=true;    
try    
Reset(f);    
while not EOF(F) do    
   begin    
   ReadLn(f,S);    
   inc(index);    
   if (pos(FindStr,S)>((Num-1)*Len)) and (pos(FindStr,S)>((Num-1)*Len)+Len) then    
      begin    
      b:=false;    
      Result:=s;    
      Break;    
      end;    
    end;    
finally    
   if b then i:=-1;    
   CloseFile(F);    
  end;    
end;

пример использования:
Код
...
var s,fs:string;
      index:integer;
      f:textfile;
...
assignfile(f,fs);
s:=FindTextFile(f,Edit1.text,20,1,index);
// здесь разбиваешь строку как тебе нужно и заносишь в Эдиты
...



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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