Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

public

functiongetattributes: TPropertyattributes; override;

procedureEdit; override;

end;

добавьте функцию регистрации…

RegisterPropertyEditor(Typeinfo( String), TMyComponent, 'Filename', TFileNameProperty);

и код…

functionTFileNameProperty.GetAttributes;

begin

Result := [paDialog];

end;

ProcedureTFilenameProperty.edit;

var

MFileOpen: TOpenDialog;

begin

MFileOpen := TOpenDialog.Create(Application);

MFileOpen.Filename := GetValue;

MFileOpen.Filter := 'Правильный тип файлов|*.*'; (* Поместите здесь ваш собственный фильтр...*)

MFileOpen.Options := MFileOpen.Options + [ofPathMustExist,ofFileMustExist];

try

ifMFileOpen.Execute thenSetValue(MFileOpen.Filename);

finally

MFileOpen.Free;

end;

end;

Записи

Пример переменной записи

В Delphi 2.0 я пытаюсь прочесть текстовый файл и получаю проблему. Текстовый файл, который я хочу прочесть, имеет записи фиксированной длины, но в самих записях могут располагаться различные типы с различной длиной, и оканчиваться в различных позициях, в зависимости от типа.

Файл выглядит примерно так:

TFH.......

TBH.......

TAB........

TAA........

Вы можете поймать больше одного зайца в случае объявления переменной записи, но если сделаете это правильно.

Type

TDataTag = Array[1..3] ofChar;

TDataTags = Array[0..NumOfTags-1] ofTDataTag;

TDataRec = packed Record

tagfield: TDataTag;

caseinteger of

0: ( поля для тэга TFH );

1: ( поля для тэга TBH );

2: …

end;

TMultiRec = packed Record

CaseBoolean of

false: (строка: Array [0..1024] of Char);

{ должно установать строку максимально возможной длины }

true : ( data: TDataRec );

End;

ConstDataTags: TDataTags = ('TFH', 'TBH', …);

varrec: TMultirec;

ReadLn(datafile, rec.line);

CaseIndexFromDataTag(rec.data.tagfield) Of

0: …

1: …

IndexFromDataTag должен искать передаваемый тэг поля в массиве DataTags. Определите все поля в TDataRec как Array [1..someUpperBound] of Char.

– Peter Below

Передача массива записей символов в Memo

Delphi 1

Тема: Передача массива записей символов в Memo.

Обработка больших строк в 16-битной версии Delphi задача далеко непростая. Особенно когда строки являются частью структуры записи и вы хотите передать их в TMemo. В данном совете показано как создать структуру записи размером 1000 символов, прочесть в нее содержимое Memo и затем записать ее обратно в Memo. Основной метод, который мы здесь используем — метод Memo GetTextBuf. Используемая структура записи представляет собой простую строку и массив из 1000 символов, но структура могла бы быть сложнее.

unitURcrdIO;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls,dbtables;

type

TForm1 = class(TForm)

Button1: TButton;

Memo1: TMemo;

Button2: TButton;

procedureButton1Click(Sender: TObject);

procedureButton2Click(Sender: TObject);

private{ Private declarations }

public{ Public declarations }

end;

type

TMyRec = record

MyArray: array[1..1000] ofchar;

mystr: string;

end;

var

Form1: TForm1;

MyRec : TMyRec;

mylist : TStringlist;

PMyChar : PChar;

myfile : file;

mb : TStream;

implementation

{$R *.DFM}

procedureTForm1.Button1Click(Sender: TObject);

begin

assignfile(myfile, 'c:\testblob.txt');

rewrite(myfile,1);

fillchar(MyRec.MyArray,sizeof(MyRec.MyArray),#0);

pmychar:=@MyRec.MyArray;

StrPCopy(pmychar,memo1.text);

Blockwrite(MyFile,MyRec,SizeOf(MyRec));

closefile(MyFile);

end;

procedureTForm1.Button2Click(Sender: TObject);

begin

assignfile(myfile, 'c:\testblob.txt');

reset(myfile,1);

fillchar(MyRec.MyArray, sizeof(MyRec.MyArray),#0);

Blockread(MyFile, MyRec, SizeOf(MyRec));

pmychar:=@MyRec.MyArray;

Memo1.SetTextBuf(pmychar);

end;

end.

Освобождение записей

Delphi 1

Для начала необходимо привести объект к нужному типу, например, так:

var

i: integer;

begin

for

i := 0 toMyList.Count - 1 dodispose(PMyRecord(MyList[i]));

MyList.Free;

end;

или

begin

for i := 0 toMyList.Count - 1 dodispose(PMyRecord(MyList.items[i]));

MyList.Free;

end;

Items — свойство по умолчанию, поэтому вам нет необходимости определять это, хотя обратное не помешает.

Теперь можно заняться созданием работоспособной и полезной функцией. В форме:

varp : ^mystruct;

begin

new(p);

dispose(p);

end;

операторы new() и dispose() в точности соответствуют процедурам getmem() и freemem(), за исключением того, что компилитор распределяет количество байт под размер структуры, на которую ссылается переменная-указатель. По этой причине указатель должен быть типизированным указателем, и следущий код неверен:

var

p: pointer;

begin

new(p);

end;

поскольку невозможно установить размер памяти, на которую должен ссылаться указатель. С другой стороны, если вы используете getmem() и freemem(), вы можете распределять байты для нетепизированного указателя, например:

varp : pointer;

begin

getmem(p, 32767);

freemem(p, 32767);

end;

Строки

StrTok для Delphi 2

Delphi 2

Я передалал это для работы в Delphi 2.0, код приведен ниже (эта функция первоначально была написана John Cooper 76356,3601 и модифицирована мной для адаптации под Delphi 2.0).

…вот этот код:

functionStrTok(Phrase: Pchar; Delimeter: PChar): Pchar;

const

tokenPtr: PChar = nil;

workPtr: PChar = nil;

var

delimPtr: Pchar;

begin

if(Phrase <> nil) thenworkPtr := Phrase

elseworkPtr := tokenPtr;

ifworkPtr = nil then begin

Result := nil;

Exit;

end;

delimPtr := StrPos(workPtr, Delimeter);

if(delimPtr <> nil) then

begin

delimPtr^ := Chr(0);

tokenPtr := delimPtr + 1

end elsetokenPtr := nil;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x