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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 23:25   #1
Нюська
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 16
По умолчанию Работа с потоками

При работе с потоком создаю процедуру, в которой входным является один поток, а выходным другой. Сам текст в поток загружается из файла или TMemo. Загружается обработанный поток, то есть выходной, в TMemo, точнее должен загружаться, но процедура Memo1.Lines.LoadFromStream(g); не работает. Тое сть сама программа не вылетает, но в Memo ничего не записывается. Что может быть за ошибка?
Нюська вне форума Ответить с цитированием
Старый 26.05.2009, 23:31   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Приведите пример своего кода, а то так сложно что то сказать...
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 26.05.2009, 23:35   #3
Нюська
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 16
По умолчанию

ну вот код самой программы:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1 : TEdit;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
procedure BitBtn5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);
procedure IntToStr(var g:TStream);
procedure Memo_File(Sender:TObject);
private
{ Private declarations }
public
{ Public declarations }
FName: string;
f:TStream;
fl:boolean;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
FName := OpenDialog1.FileName;
Edit1.Text := FName;
Memo1.Lines.LoadFromFile(FName);
end;
end;


procedure TForm1.BitBtn3Click(Sender: TObject);
begin
SaveDialog1.FileName := FName;
if SaveDialog1.Execute then
begin
FName := SaveDialog1.FileName;
Edit1.Text := FName;
Memo1.Lines.SaveToFile(FName);
end
end;

procedure TForm1.IntToStr(var g:TStream);
var i,k,j:word;
s1:string;
c:char;
begin
g.Position:=0;
with f do
begin
Position := 0;
i := 0;
k:=Size; while i <> k do
begin
Read(c,1);
inc(i);
with g do
begin
case c of '1': s1:='один';
'2': s1:='два';
'3': s1:='три';
'4': s1:='четыре';
'5': s1:='пять';
'6': s1:='шесть';
'7': s1:='семь';
'8': s1:='восемь';
'9': s1:='девять';
'0': s1:='нуль';
end;
if (c>'0') and (c<'9') then
begin
j:=1;
while j<>length(s1)+1 do
begin
write(s1[j],1);
inc(j);
end;
c:=' ';
write(c,1);
end;
end;
end;
FName:='tmp1.txt';
Free;
end
end;

procedure TForm1.Memo_File;
begin
fl:=not fl;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
var g:TStream;
s:string;
begin
if (FName <> '') or (fl=true) then
begin
if fl=false then
f:=TFileStream.Create(FName, fmOpenRead)
else
begin
f:=TStringStream.Create(Memo1.Lines .Text);
end;
s:='';
g:=TStringStream.Create(s);
IntToStr(g);
Memo1.Lines.LoadFromStream(g);
end
else MessageDlg('Не выбран файл!', mtWarning, [mbOk], 0)
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
FName := '';
fl:=false;
end;

procedure TForm1.OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);
begin
if not FileExists(OpenDialog1.FileName) then
begin
MessageDlg('Файл не найден!', mtError, [mbOk], 0);
CanClose := false
end
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
Application.Terminate
end;


end.
Нюська вне форума Ответить с цитированием
Старый 27.05.2009, 00:52   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Сделайте так и всё будет работать
Код:
procedure TForm1.BitBtn4Click(Sender: TObject);
var
g:TStream;
s:string;
begin
if (FName <> '') or (fl=true) then
begin
if fl=false then
f:=TFileStream.Create(FName, fmOpenRead)
else
begin
f:=TStringStream.Create(Memo1.Lines .Text);
end;
s:='';
g:=TStringStream.Create(s);
IntToStr(g);
g.Position:=0;
Memo1.Lines.LoadFromStream(g);
end
else MessageDlg('Не выбран файл!', mtWarning, [mbOk], 0)
end;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с потоками Neymexa Общие вопросы .NET 16 23.04.2009 17:42
Работа с аудио (потоками) JamS007 Общие вопросы C/C++ 2 14.02.2009 22:14
Проблема с потоками DeeNamid Общие вопросы Delphi 2 04.08.2008 17:36
работа с потоками Alex_Pro Общие вопросы .NET 1 01.07.2008 07:25
C++, работа с потоками mat90x Помощь студентам 20 15.05.2008 22:20