Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.09.2012, 18:11
Аватар для UnrealFire
UnrealFire UnrealFire вне форума
Новичок
 
Регистрация: 28.08.2012
Сообщения: 66
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Словарь

как сделать запись в фаил с обычного поля ввода текста. фаил String типа не создаёт, только ограниченный типа String[80] и след. не записывает в фаил т.к другой тип. как решить знаний нет.
Ответить с цитированием
  #2  
Старый 22.09.2012, 18:28
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Цитата:
Сообщение от UnrealFire
как сделать запись в фаил с обычного поля ввода текста. фаил String типа не создаёт, только ограниченный типа String[80] и след. не записывает в фаил т.к другой тип. как решить знаний нет.
Я мало что понял Видимо, ты хочешь записать в типизированный файл строку - это я еще понял. А дальше что не получается? Создаешь, кажись тип
Код:
mystring=string[100];
и файл
Код:
var sfile:file of mystring;
и где-то его записываешь
Код:
var str:mystring;
begin
  AssignFile(f,'D:\F\BORLAND_1\Delphi7\projects\tmp1\2\tstfile.tst');
  Rewrite(f);
  str:=edit1.Text;
  Write(f,str);
  Closefile(f);
end;
Ответить с цитированием
  #3  
Старый 22.09.2012, 18:37
icsander icsander вне форума
Новичок
 
Регистрация: 17.04.2011
Сообщения: 87
Репутация: 10
По умолчанию

Попробуй ч-з TStringList.SaveToFile, либо, что более изящно, ч-з файловый поток.
Ответить с цитированием
  #4  
Старый 22.09.2012, 20:00
Аватар для UnrealFire
UnrealFire UnrealFire вне форума
Новичок
 
Регистрация: 28.08.2012
Сообщения: 66
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от YVitaliy
Я мало что понял Видимо, ты хочешь записать в типизированный файл строку - это я еще понял. А дальше что не получается? Создаешь, кажись тип
Код:
mystring=string[100];
и файл
Код:
var sfile:file of mystring;
и где-то его записываешь
Код:
var str:mystring;
begin
  AssignFile(f,'D:\F\BORLAND_1\Delphi7\projects\tmp1\2\tstfile.tst');
  Rewrite(f);
  str:=edit1.Text;
  Write(f,str);
  Closefile(f);
end;
типы edit1.text и mystring не совместимы

icsander а можно поподробней, я новичок

Последний раз редактировалось UnrealFire, 22.09.2012 в 20:31.
Ответить с цитированием
  #5  
Старый 22.09.2012, 21:26
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от UnrealFire
...а можно поподробней, я новичок
Можно, только более связно объясни свое желание, чтобы гадать не приходилось.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 22.09.2012, 21:55
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Цитата:
Сообщение от UnrealFire
типы edit1.text и mystring не совместимы
Это с каких таких пор? У меня Delphi7 и они прекрасно совместимы. Если в Edit строка окажется длиннее, то автоматически "обрежется" до необходимого размера. Если так не получается, то лучше уж как советует
icsander, через TStringList (для новичка), или TFileStream (не так уж сложно, но нужны дополнительные операции, которые потом тоже придется разсяснять ).
Код:
var stringList:TStringList;
begin
  stringList:=TStringList.Create;
  stringList.Add(Edit1.Text);
  stringList.SaveToFile('E:\Новая папка\Новая папка1\Новая папка2\TestFile.tst');
  stringList.free;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение:
UnrealFire (23.09.2012)
  #7  
Старый 23.09.2012, 12:27
Аватар для UnrealFire
UnrealFire UnrealFire вне форума
Новичок
 
Регистрация: 28.08.2012
Сообщения: 66
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

ок. попробую.
мне нужно чтоб по кнопке заносилась строка из поля ввода в базу отображаемую в окне. база должна хранится в фаиле.
Ответить с цитированием
  #8  
Старый 24.09.2012, 13:52
Аватар для UnrealFire
UnrealFire UnrealFire вне форума
Новичок
 
Регистрация: 28.08.2012
Сообщения: 66
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Код:
var stringList:TStringList;
begin
  stringList:=TStringList.Create;
  stringList.Add(Edit1.Text);
  stringList.SaveToFile('db.txt');
  stringList.free;
  Memo1.lines.loadfromfile('db.txt');
конструкция работает. возник вопрос как сделать запись в фаил построчно, что было так: ввёл, нажал кнопку, добавилась строка, снова ввёл, снова нажал, добавилась вторая строка(первая на месте, не удалена) и т.д.
конструкция YVitaliy не работает, не могу вывести из фаила в мемо или лайбел т.к. заносит в фаил какю то калималю из символов.
Ответить с цитированием
  #9  
Старый 24.09.2012, 14:14
Аватар для Lost_Fish
Lost_Fish Lost_Fish вне форума
Начинающий
 
Регистрация: 21.07.2011
Адрес: Новосибирск
Сообщения: 103
Версия Delphi: Delphi 7,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от UnrealFire
Код:
var stringList:TStringList;
begin
  stringList:=TStringList.Create;
  stringList.Add(Edit1.Text);
  stringList.SaveToFile('db.txt');
  stringList.free;
  Memo1.lines.loadfromfile('db.txt');
конструкция работает. возник вопрос как сделать запись в фаил построчно, что было так: ввёл, нажал кнопку, добавилась строка, снова ввёл, снова нажал, добавилась вторая строка(первая на месте, не удалена) и т.д.
конструкция YVitaliy не работает, не могу вывести из фаила в мемо или лайбел т.к. заносит в фаил какю то калималю из символов.

в твоём случае без StringList'a делать надо Memo.Lines - это и есть твой StringList у него есть Memo.Lines.SaveToFile, loadFromFile и Add
__________________
Код сырец
Ответить с цитированием
  #10  
Старый 24.09.2012, 14:22
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от UnrealFire
Код:
var stringList:TStringList;
begin
  stringList:=TStringList.Create;
  stringList.Add(Edit1.Text);
  stringList.SaveToFile('db.txt');
  stringList.free;
  Memo1.lines.loadfromfile('db.txt');
конструкция работает. возник вопрос как сделать запись в фаил построчно, что было так: ввёл, нажал кнопку, добавилась строка, снова ввёл, снова нажал, добавилась вторая строка(первая на месте, не удалена) и т.д.
Добавить новую строчку в файл:
Код:
var
  fs: TFileStream;
  s: string;
begin
  if FileExists('db.txt') then
    fs := TFileStream.Create('db.txt', fmOpenWrite or fmShareDenyWrite)
  else
    fs := TFileStream.Create('db.txt', fmCreate);

  try
    s := Edit1.Text + #13#10;
    fs.WriteBuffer(Pointer(s)^, Length(s));
  finally
    fs.Free;
  end;
end;
Цитата:
Сообщение от UnrealFire
конструкция YVitaliy не работает, не могу вывести из фаила в мемо или лайбел т.к. заносит в фаил какю то калималю из символов.
Какая конструкция YVitaliy не работает?
Ответить с цитированием
  #11  
Старый 24.09.2012, 15:26
Аватар для UnrealFire
UnrealFire UnrealFire вне форума
Новичок
 
Регистрация: 28.08.2012
Сообщения: 66
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от YVitaliy
Я мало что понял Видимо, ты хочешь записать в типизированный файл строку - это я еще понял. А дальше что не получается? Создаешь, кажись тип
Код:
mystring=string[100];
и файл
Код:
var sfile:file of mystring;
и где-то его записываешь
Код:
var str:mystring;
begin
  AssignFile(f,'D:\F\BORLAND_1\Delphi7\projects\tmp1\2\tstfile.tst');
  Rewrite(f);
  str:=edit1.Text;
  Write(f,str);
  Closefile(f);
end;
вот эта.

Lost_Fish спасибо будем пробовать.
Ответить с цитированием
  #12  
Старый 24.09.2012, 15:32
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от UnrealFire
вот эта.
Потому что эту конструкцию нужно читать так же как и записываешь. Нельзя прочитать её такой командой:
Код:
Memo1.lines.loadfromfile('D:\F\BORLAND_1\Delphi7\projects\tmp1\2\tstfile.tst');
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
UnrealFire (24.09.2012)
  #13  
Старый 25.09.2012, 19:26
Аватар для UnrealFire
UnrealFire UnrealFire вне форума
Новичок
 
Регистрация: 28.08.2012
Сообщения: 66
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Код:
unit dict1;

interface

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

type
  TMainForm = class(TForm)
    LogoLabel: TLabel;
    ScrollBox: TScrollBox;
    MainLabel: TLabel;
    SpeedButton1: TSpeedButton;
    Edit1: TEdit;
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var

  MainForm: TMainForm;
  db:file of string[100];
  Li:String;

implementation

{$R *.dfm}



procedure TMainForm.SpeedButton1Click(Sender: TObject);
var
  fs: TFileStream;
  s: string;
{var str:string[100];
begin
  AssignFile(db,'db.txt');
  Rewrite(db);
  str:=str + #13 + edit1.Text;
  Write(db,str);
  Closefile(db);
  Memo1.lines.loadfromfile('db.txt'); //пишет (т.н. она заносится в фаил) какую-то калималю вместо слов.

end;}

{var stringList:TStringList;
begin
  stringList:=TStringList.Create;
  stringList.Add(Edit1.Text);
  stringList.SaveToFile('db.txt');
  stringList.free;
  Memo1.lines.loadfromfile('db.txt');}

begin
  if FileExists('db.txt') then
    fs := TFileStream.Create('db.txt', fmOpenWrite or fmShareDenyWrite)
  else
    fs := TFileStream.Create('db.txt', fmCreate);

  try
    s := Edit1.Text + #13#10;
    fs.WriteBuffer(Pointer(s)^, Length(s));
  finally
    fs.Free;
  end;
  MainLabel.Caption:=s;
end;

end.
вот код. пишет не по строкам а заменой. Где я ошибся?
Ответить с цитированием
  #14  
Старый 26.09.2012, 03:23
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от UnrealFire
вот код. пишет не по строкам а заменой. Где я ошибся?
Это я ошибся. Правильно нужно так:
Код:
var
  fs: TFileStream;
  s: AnsiString;
begin
  if FileExists('db.txt') then
  begin
    fs := TFileStream.Create('db.txt', fmOpenWrite or fmShareDenyWrite);
    fs.Position := fs.Size; // <--- ВОТ ЭТО НУЖНО ДОБАВИТЬ
  end else
  begin
    fs := TFileStream.Create('db.txt', fmCreate);
  end;
 
  try
    s := Edit1.Text + #13#10;
    fs.WriteBuffer(Pointer(s)^, Length(s));
  finally
    fs.Free;
  end;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
UnrealFire (26.09.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:42.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter