Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как создать фай *.txt и записать в него данные.


Страницы:   1 2

vegarulez ©   (2006-06-04 22:00:00) 

Доброго времени суток мастера! У меня такой вопрос. Как создать и записать данные в текстовый файл. То бишь есть к пример Tedit в котором есть данные, или допустим Tmemo...
Так вот надо к примеру создать файл и записать в него данные...
Я делаю скорее всего неправильно, и меня выскаивает ошибка в строке помеченной $$$ (Project Project2.exe raised exception class ElnOutError with message 'I/O error 103' Process stopped Use Step or Run to continue)...
Но что-то нигде не могу найти примеров создания файлов  и работы с ними... поможите ссылью... или малеким примерчиком с записью hello world в файлик 1.txt

Вот как я делаю... замудрёно и не понятно... по книженции...

unit Unit1;

interface

uses
 SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms,
 QDialogs, QStdCtrls;

 const
 filename:string[5]='1.dat';
type

 TForm1 = class(TForm)
   Button1: TButton;
   Edit1: TEdit;
   Edit2: TEdit;
   Label1: TLabel;
   Label2: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure ClearEdits;
 private
   { Private declarations }
 public
   { Public declarations }
   end;

   Trecord=record
   Vata:string[20];
   end;
var
 Form1: TForm1;

implementation

{$R *.xfm}

type
Txt = file of Trecord;
var
RecFile: Txt;

procedure Tform1.ClearEdits;
var
i:integer;
begin
for i:=0 to controlcount-1 do
if controls[i] is tedit then
(controls[i] as Tedit).text:='';
end;

procedure TForm1.Button1Click(Sender: TObject);
var rec: Trecord;
tmp:Integer;
begin
rec.Vata:=Edit2.text;
$$$ tmp:=FilePos(recFile);  $$$
seek(RecFile, FileSize(recFile));
write(RecFile,Rec);
seek(RecFile,tmp);
ClearEdits;

end;
end.


Сергей М.   (2006-06-07 10:52:00) [1]


> загрузить с него тоже не может так как его нет


Так создай !

На то тебе и даны методы SaveToFile(), SaveToStream()


vegarulez   (2006-06-06 22:28:00) [2]

Ругается также при самом запросе, что Cursor not returned from Query... так запрос скорее всего однонаправленный... ничего не возвращающий...


vegarulez   (2006-06-06 22:19:00) [3]

Раннее спасибо написал, за то что относилось к SQLQuery + SqlConnection понял что почём.

Теперь про использование SQLClientDataSet1...

Ругается, что де не могу загрузить с файла... так как файл он походу не создаёт т.к. его нет в директории с проектом..
естественно загрузить с него тоже не может так как его нет...


Ivolg   (2006-06-06 22:18:00) [4]

>vegarulez ©

Пожайлуста...


vegarulez   (2006-06-06 22:16:00) [5]

Млин... наконец-то понял... вот я тупень...
просто когда запускал в делфи и не копилял в ехе он всегда выводил exception сообщение... и я его пытался выловить и убить чтоб оно не появлялось...
И никак не понимал, как это люди говорят, что работает и нет месаг всяких, а у меня работает и при исключении вываливается всегда месага...
блин... Оказывается просто в exe компильнуть нуно было...

спасибо Ivolg ©.. вразумил...

Тяжело в лечении, легко в раю... (с)


Ivolg   (2006-06-06 22:09:00) [6]

>vegarulez ©

Ругается где ? При самом запросе или при подключении ?


vegarulez   (2006-06-06 22:00:00) [7]

Пытаюсь так сделать - ругается... (
Как правильно прописать?
Помоги...

procedure TForm2.Button1Click(Sender: TObject);
begin
form2.SQLClientDataSet1.CommandText:='INSERT INTO `diski` (`account`, `value`, `product`, `data_in`, `hash` ) VALUES ('+ Form1.edit1.text + Form1.Edit2.Text +', '+ Form2.edit1.text +', "'+ (prd) +'","'+ (strd) +'","'+ (hash) +'")';
Form2.SQLClientDataSet1.SaveToFile('123.bin',dfBinary);
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
Form2.SQLClientDataSet1.LoadFromFile('123.bin');
Form2.SQLClientDataSet1.Active:=true;
end;


Ivolg   (2006-06-06 22:00:00) [8]

Извеняюсь за флуд, у меня что-то лагнуло...


Ivolg   (2006-06-06 21:58:00) [9]

>vegarulez ©
Мне как раз таки и не надо выводить месаг и прочих сообщений...
Я об этом писал выше... Юзер не должен видеть сообщений об ошибках и прочей ерунды. Всё должно записаться в файл и при повторном подключении прочесться от туда и записаться в бд.


А кто тебе мешает удалить функцию, которая выводит сообщение ?
ShowMessage('Ошибка подключения к БД');(


Ivolg   (2006-06-06 21:58:00) [10]

>vegarulez ©
Мне как раз таки и не надо выводить месаг и прочих сообщений...
Я об этом писал выше... Юзер не должен видеть сообщений об ошибках и прочей ерунды. Всё должно записаться в файл и при повторном подключении прочесться от туда и записаться в бд.


А кто тебе мешает удалить функцию, которая выводит сообщение ?
ShowMessage('Ошибка подключения к БД');(


Сергей М.   (2006-06-06 15:17:00) [11]


> Дай


Они у тебя перед носом - в демо-проектах в штатной поставке Делфи.


vegarulez   (2006-06-06 11:29:00) [12]

2 Ivolg ©  
Мне как раз таки и не надо выводить месаг и прочих сообщений...
Я об этом писал выше... Юзер не должен видеть сообщений об ошибках и прочей ерунды. Всё должно записаться в файл и при повторном подключении прочесться от туда и записаться в бд.

2 Сергей М. ©  
Тока начал читать...
У тебя есть какие-нить примеры к этому компоненту?
Дай ссыль...


Ivolg   (2006-06-06 10:53:00) [13]

Попробуй таким методом:
try
datamodule8.SQLConnection1.Open;  
datamodule8.SQLnum.SQL.Clear;
datamodule8.SQLnum.SQL.Add('INSERT INTO `diski` (`account`, `value`, `product`, `data_in`, `hash` ) VALUES ('+ Form1.edit1.text + Form1.Edit2.Text +', '+ Form2.edit1.text +', "'+ (prd) +'","'+ (strd) +'","'+ (hash) +'")');  
datamodule8.SQLQuery.ExecSQL();
except
ShowMessage('Ошибка подключения к БД');
Memo1.Lines.SaveToFile('db.txt');
end;


Сергей М.   (2006-06-06 09:42:00) [14]


> vegarulez ©   (06.06.06 09:28) [23]


Ты бы хоть справку почитал что ли .. к этому компоненту ... прежде чем про "серпы" рассуждать ..

Этот компонент сделает всечто тебе нужно !


vegarulez   (2006-06-06 09:28:00) [15]

>Подключение ему нужно лишь в момент синхронизации

Так в этот момент и выскочит месага, что связи нет... В момент синхронизации... мне нужно это отловить.

И при выводе что нет связи сохранит в файл, потом при повторном подключении и отправке следующего запроса, открыть файл и отправить ранее не отправленные данные.

Это одно, а второе мне не надо их хранить, и запршивать всю таблицу и хранить в нём, и изменять её, и синхронизировать изменения...
мне надо просто добавить в таблицу быстро и молниеносно (как серпом по ... МТСу) )))
Без всяких синхронизаций. Однонаправленым запросом.


Сергей М.   (2006-06-06 09:19:00) [16]


> TClientDataSet тоже нуждается в подключении.


Вот как раз и не нуждается.
Подключение ему нужно лишь в момент синхронизации изменений в его автономном дейтасете с соотв данными в БД. Автономный же дейтасет м.б. создан методами CreateDataSet (новый), LoadFromFile (ранее сохраненный), по окончанию сессии автономной работы приложения (т.е. сессии без подключения к БД) дейтасет м.б. сохранен в файл для последующей загрузки из этого файла.


vegarulez   (2006-06-06 09:05:00) [17]

Так TClientDataSet тоже нуждается в подключении....
А при подключении может выпасть ошибка...
Я использую
SQLConnection + SQLQuery
И делаю вот как

datamodule8.SQLConnection1.Open;  // Открываю соединение
datamodule8.SQLnum.SQL.Clear;      // Очищаю буфер запроса
datamodule8.SQLnum.SQL.Add('INSERT INTO `diski` (`account`, `value`, `product`, `data_in`, `hash` ) VALUES ('+ Form1.edit1.text + Form1.Edit2.Text +', '+ Form2.edit1.text +', "'+ (prd) +'","'+ (strd) +'","'+ (hash) +'")');  // Формирую запрос
datamodule8.SQLQuery.ExecSQL();  // Выполняю запрос

но когда открываешь Open, то при выключенной бд или отсутствующей связи обязательно выскочет исключение.


Сергей М.   (2006-06-06 08:46:00) [18]


> vegarulez ©   (06.06.06 00:21) [19]


Для этого имеется готовое решение - TClientDataSet


vegarulez   (2006-06-06 00:21:00) [19]

Спасибо,
но это, всё же, не работа с исключениями...
Я хочу посмотреть как с исключениями работать, хотя бы один рабочий пример, чтоб понять, т.к. они ещё у меня используются в одном месте программы, где я скидываю данные в бд, а связь и доступ к бд не всегда есть, поэтому приходится в текстовик данные сохранять. Так вот при обращении к бд и надо будет использовать исключения, чтоб когда не было доступа, и открытия подключения к бд не произошло, по вызову события чтоб данные автоматом скидывались в текстовик, и естесственно пользователь не видел всяких не нужных и непонятных ему месаг... и ошибок...


Джо   (2006-06-05 23:51:00) [20]

if FileExists(Filename) then
 ...
else
 ...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо