Форум: "Начинающим";
Текущий архив: 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