Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Вниз

Читать и писать одновременно.   Найти похожие ветки 

 
mr1Andersen   (2008-01-17 13:22) [0]

Вот программный код:

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 Hour,Min,Sec,MSec,Year,Month,Day:Word;
 xHour,xMin,xSec,xYear,xMonth,xDay,xc:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a,r: String;
i,k1:integer;
f1: TextFile;
t : boolean;
begin
if FileExists("1.txt")=True then
begin
 AssignFile(f1,"1.txt");
 reset(f1);
 While Not EOF(f1) do
 If Not EOLN(f1) then
 BEGIN
   Readln(f1,a);
   k1:=length(a);
   i := 1;
  Begin
  repeat
  if (a[i]="b") and (a[i+1]="m") and (a[i+2]="w") then
   begin
     ShowMessage("Найдено товар");
     Button2.OnClick(Button2);
   end;
  Inc(i);
  until (i >= k1);
  end;
 END;
CloseFile(f1);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
f:TextFile;
begin
AssignFile(f,"1.txt");  
Reset(f);
Append(f);
  writeln(f,"Новая запись");
CloseFile(f);
end;
end.

В папке в которую сохранена прожка нужно создать (1.txt) в который записываем следующий текст (блаблаблаbmwбла бла).
Запускаем прогу, - ошибка!  Ни возможно читать и писать одновременно ТЕКСТОВЫЙ файл.
Подскажите можно как то обойти это?


 
Dennis I. Komarov ©   (2008-01-17 13:28) [1]

> В папке в которую сохранена прожка нужно создать (1.txt)

Почему бы программе самой не создавать его, если его нет?

> в который записываем следующий текст (блаблаблаbmwбла бла)

Зачем?
> Запускаем прогу, - ошибка!  Ни возможно читать и писать
> одновременно ТЕКСТОВЫЙ файл.

Вретес, при запуске программы, она с файлом ничего не делает.
Программку в которой "бла-бла" писали закрыть бы надо :)


 
mr1Andersen   (2008-01-17 13:34) [2]


> Программку в которой "бла-бла" писали закрыть бы надо :)


Что Вы имеете ввиду?


 
Dennis I. Komarov ©   (2008-01-17 13:37) [3]

> procedure TForm1.Button2Click(Sender: TObject);
> var
> f:TextFile;
> begin
> AssignFile(f,"1.txt");  
> Reset(f);
> Append(f);

>  writeln(f,"Новая запись");
> CloseFile(f);
> end;

Просмотрел :(


 
mr1Andersen   (2008-01-17 13:37) [4]

Если создать (2.txt) и поставить 2-рой кнопке код:

procedure TForm1.Button2Click(Sender: TObject);
var
f:TextFile;
begin
AssignFile(f,"1.txt");  
Reset(f);
Append(f);
 writeln(f,"Новая запись");
CloseFile(f);
end;
end.

Тогда все работает


 
mr1Andersen   (2008-01-17 13:38) [5]

Извините, вот так:

procedure TForm1.Button2Click(Sender: TObject);
var
f:TextFile;
begin
AssignFile(f,"2.txt");  
Reset(f);
Append(f);
 writeln(f,"Новая запись");
CloseFile(f);
end;
end.


 
Dennis I. Komarov ©   (2008-01-17 13:40) [6]

> [4] mr1Andersen   (17.01.08 13:37)

И чем он изменился?


 
mr1Andersen   (2008-01-17 13:41) [7]

AssignFile(f,"2.txt");


 
Dennis I. Komarov ©   (2008-01-17 13:42) [8]


> [7] mr1Andersen   (17.01.08 13:41)

Зачем Reset?


 
mr1Andersen   (2008-01-17 13:44) [9]

А как иначе?


 
{RASkov} ©   (2008-01-17 13:46) [10]

> [9] mr1Andersen   (17.01.08 13:44)

F1 почитать? Тама таких примеров - вагон и маленькая тележка)


 
Смирнов   (2008-01-17 13:49) [11]


> А как иначе?

Reset - открытие файла для чтения
Append - открытие существующего файла для записи (добавления)
Rewrite - создание нового файла для записи (если уже есть - перезапишется).
А вот reset и Append одновременно - непонятно однако зачем...


 
mr1Andersen   (2008-01-17 13:57) [12]

Если я стираю reset или Append та же ошибка


 
Malik   (2008-01-17 13:59) [13]


> Ни возможно читать и писать одновременно ТЕКСТОВЫЙ файл

По коректнее надо выражаться, т.к. паралельность (или по вашему "одновременность") можно только организовать при многопоточной архитектуре программы.


 
{RASkov} ©   (2008-01-17 14:00) [14]

> [12] mr1Andersen   (17.01.08 13:57)
> Если я стираю reset или Append

Сотри лучше все, затем прочитай хелп и напиши заново)


 
Сергей М. ©   (2008-01-17 14:00) [15]


> mr1Andersen


Файл-то предполагается большого размера ? Насколько большого ?


 
Dennis I. Komarov ©   (2008-01-17 14:06) [16]

> [15] Сергей М. ©   (17.01.08 14:00)

Судя по коду:
writeln(f,"Новая запись");
14 Байт :)


> [12] mr1Andersen   (17.01.08 13:57)

Не верю! (С)


 
{RASkov} ©   (2008-01-17 14:09) [17]

> [16] Dennis I. Komarov ©   (17.01.08 14:06)
> Судя по коду:
> writeln(f,"Новая запись");
> 14 Байт :)

+14 байт, а не всего
:)
Но я тоже не верю, что файл гиганских размеров, да и не в размере дело.....


 
mr1Andersen   (2008-01-17 14:13) [18]


> Файл-то предполагается большого размера ? Насколько большого
> ?


Гдето 5-10 Мегабайт


 
Dennis I. Komarov ©   (2008-01-17 14:15) [19]

> [17] {RASkov} ©   (17.01.08 14:09)

Да, но он и их еще не смог вставить :) И про "бла-бла" я забыл :)


 
Dennis I. Komarov ©   (2008-01-17 14:21) [20]

А если еще на
procedure TForm1.Button1Click(Sender: TObject);
посмотреть, то можно предположить, что это некое подобие БД :)
И с какого оно вдруг TextFile решило стать....

ShowMessage("Найдено товар");

у, это уже пахнет денюжкой :)


 
mr1Andersen   (2008-01-17 14:24) [21]

Люди, если создать (2.txt) и заменить код 2-рой кнопке на
AssignFile(f,"2.txt");
Все идеально . Вопрос как этого достичь в первом варианте (записывать не в 2-й а в 1-й txt)?


 
{RASkov} ©   (2008-01-17 14:24) [22]

> [18] mr1Andersen   (17.01.08 14:13)
> f1: TextFile;

Текстовый файл открывается либо для чтения либо для записи, но не все вместе....
Если текстовый файл ранее уже был открыт с помощью Reset или Rewrite то вызов процедуры Append
приведет к закрытию данного файла и открытию его вновь, но уже для добавления записей, при этом
указатель файла устанавливается в его конец....

Если нужно и чтение и записиь и перемещение по файлу, посмотри в сторону нетипизированных файлов...
Или TFileStream...


 
Dennis I. Komarov ©   (2008-01-17 14:29) [23]

> [21] mr1Andersen   (17.01.08 14:24)

1) Почитай справку по теме
2) Убери Reset
3) Возможно 1.txt открыт др. программой :) [2]

ЗЫ
 Ты даже не удосужился сказать, когда у тебя возникает сие, Редиска!


 
Сергей М. ©   (2008-01-17 14:31) [24]


> mr1Andersen   (17.01.08 14:13) [18]


При таком мизерном объеме проще будет воспользоваться классом TStringList


 
Dennis I. Komarov ©   (2008-01-17 14:32) [25]

> [24] Сергей М. ©   (17.01.08 14:31)

Сейчас будет "А как" :)


 
mr1Andersen   (2008-01-17 14:34) [26]


> ЗЫ   Ты даже не удосужился сказать, когда у тебя возникает
> сие, Редиска!

это ты о чем?


 
mr1Andersen   (2008-01-17 14:37) [27]


> {RASkov}


Спасибо за ответ.


> Текстовый файл открывается либо для чтения либо для записи,
>  но не все вместе....


жаль конечно.


 
{RASkov} ©   (2008-01-17 14:40) [28]

> [27] mr1Andersen   (17.01.08 14:37)
> жаль конечно.

А почему бы не подумать над [24]?
LoadFromFile();
Работаем с данными файла
SaveToFile();


 
Dennis I. Komarov ©   (2008-01-17 14:49) [29]

> [26] mr1Andersen   (17.01.08 14:34)

[0]
Запускаем прогу, - ошибка!  Ни возможно читать и писать одновременно ТЕКСТОВЫЙ файл.
[1]
Вретес, при запуске программы, она с файлом ничего не делает.


 
mr1Andersen   (2008-01-17 14:51) [30]

Извините, нажмите пожалуйста на первую кнопку


 
Dennis I. Komarov ©   (2008-01-17 14:54) [31]

> [30] mr1Andersen   (17.01.08 14:51)

То-то я смотрю вся ветка в обсуждении второго кнопаря :)))))


 
mr1Andersen   (2008-01-17 14:56) [32]


> Dennis I. Komarov


Вы совершенно правы


 
Dennis I. Komarov ©   (2008-01-17 14:57) [33]

Оказывается:
procedure TForm1.Button1Click(Sender: TObject);
var
a,r: String;
i,k1:integer;
f1: TextFile;
t : boolean;
begin
if FileExists("1.txt")=True then
begin
AssignFile(f1,"1.txt");
reset(f1);
While Not EOF(f1) do
If Not EOLN(f1) then
BEGIN
  Readln(f1,a);
  k1:=length(a);
  i := 1;
 Begin
 repeat
 if (a[i]="b") and (a[i+1]="m") and (a[i+2]="w") then
  begin
    ShowMessage("Найдено товар");
    Button2.OnClick(Button2);
  end;
 Inc(i);
 until (i >= k1);
 end;
END;
CloseFile(f1);
end;
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.045 c
2-1200115481
Voya)
2008-01-12 08:24
2008.02.10
Загрузочная флешка


15-1199474210
NaNo
2008-01-04 22:16
2008.02.10
Длина взаимного перекрытия двух отрезков


2-1200282124
Dana
2008-01-14 06:42
2008.02.10
каз.яз в Delphi


15-1200054385
Ega23
2008-01-11 15:26
2008.02.10
Надо работать с UDP


2-1200297813
dumka
2008-01-14 11:03
2008.02.10
Проигрыватель





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский