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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2009, 11:27   #1
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
Вопрос Структура

Cтруктура ошибок не выдает,но и не записывает размеры окна. Где ошибка ???
Код:
type
PWindowsSize=^WindowsSize;
WindowsSize=record
Left,width,top,height:integer;
end;

  TForm1 = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ws:PWindowsSize;
  f:TFileStream;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ws:=New(PWindowsSize);
ws.Left:=Form1.Left;
ws.Width:=Form1.Width;
ws.Top:=Form1.Top;
ws.height:=Form1.Height;
f:=TFileStream.Create('C:\Documents and Settings\Сергей\Рабочий стол\666.dat',fmCreate);
f.Write (ws,sizeof(ws));
f.Free;
Dispose(ws);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
if FileExists ('C:\Documents and Settings\Сергей\Рабочий стол\666.dat') then
begin
f:=TFileStream.Create('C:\Documents and Settings\Сергей\Рабочий стол\666.dat',fmOpenRead);
f.Read(ws,sizeOF(ws));
end;

Left:=ws.Left;
Height:=ws.height;
Top:=ws.top;
Width:=ws.width;

f.Free;

end;
end.
Skype: Lotles-XXXX

Последний раз редактировалось Stilet; 09.09.2009 в 12:47.
Superlotles вне форума Ответить с цитированием
Старый 09.09.2009, 12:09   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Цитата:
ws.Left:=Form1.Left;
ws.Width:=Form1.Width;
ws.Top:=Form1.Top;
ws.height:=Form1.Height;
Код:
ws^.Left:=Form1.Left;
ws^.Width:=Form1.Width;
ws^.Top:=Form1.Top;
ws^.height:=Form1.Height;
возможно нужно в таком духе писать.
Да, и еще, в файл вы записываете указатель на запись, а не саму запись. Вам точно это нужно?

Последний раз редактировалось mMAg; 09.09.2009 в 12:22.
mMAg вне форума Ответить с цитированием
Старый 14.09.2009, 23:06   #3
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Ты правильно указал на ошибки(в книге потом нашел), но все-равно структура не получается. Почему-то файл не создается, но ошидок не выдает! В чем может быть проблема ???
Skype: Lotles-XXXX
Superlotles вне форума Ответить с цитированием
Старый 14.09.2009, 23:14   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а стоит ли через указатель делать?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.09.2009, 23:23   #5
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Да, я специально через него делаю в учебных целях , но делал и без указателя и тоже почему-то файл не создавался
Skype: Lotles-XXXX

Последний раз редактировалось Superlotles; 14.09.2009 в 23:30.
Superlotles вне форума Ответить с цитированием
Старый 14.09.2009, 23:29   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Superlotles Ваш пример с Библии Делфи. Так вот, вы внимательно посмотрите на код в книге.
Код:
unit MainModule;

interface

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

type
  PWindowsSize = ^ WindowsSize;
  WindowsSize = record
   Left, Top, Width, Height:Integer;
  end;


  TForm1 = class(TForm)
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
 ws:PWindowsSize;
 fs:TFileStream;
begin
 ws:=New(PWindowsSize); // Выделяем память
 if FileExists('size.dat') then
  begin
   fs:=TFileStream.Create('size.dat', fmOpenRead);
   fs.Read(ws^, sizeof(ws^));
   fs.Free;

   Left:=ws.Left;
   Top:=ws.Top;
   Width:=ws.Width;
   Height:=ws.Height;
  end;
 Dispose(ws); // Уничтожаем память
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
 ws:PWindowsSize;
 f:TFileStream;
 Str:String;
begin
 ws:=New(PWindowsSize); // Выделяем память
 ws.Left:=Left;
 ws.Top:=Top;
 ws.Width:=Width;
 ws.Height:=Height;

 f:=TFileStream.Create('size.dat', fmCreate);
 f.Write(ws^, sizeof(ws^));
 f.Free;
 Dispose(ws); // Уничтожаем память
end;

end.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структура hungry Общие вопросы C/C++ 11 25.06.2009 20:31
структура Cpluser Общие вопросы C/C++ 4 16.06.2009 17:42
Структура SL1CK Общие вопросы C/C++ 8 08.06.2009 21:31
Структура IF в С++ lebrosha Помощь студентам 3 22.05.2009 00:09
структура cr1mson Общие вопросы C/C++ 3 14.01.2009 18:08