DATA

10 отговора 0 прегледа
#1

DATA

В Бейсик има оператор DATA, с който може да се записват различни типове данни и после последователно да се изчитат, напр.:
DATA March, 31, 45, April, 30, 66 и т.н.
После това се чете последователно.
Как най-удачно може да се реализира с Делфи?

Отговор
в отговор на Hoвak #2

VarArray

С масив от Variant. Виж в хелпа за VarArrayOf и VarArrayCreate

Отговор
в отговор на andrew_nikoloff #3

Re: VarArray

Да кажем, че го направя:
Unit
Variants

Syntax


[Delphi] function VarArrayCreate(var Bounds: array of Integer; AVarType: Word): Variant;
За VarType избирам varVariant, нали? Обаче после как да го пълня, ако изходните данни, подобни на примера, са 3-4 реда?
Идеята е да ги въведа в сорса, после програмата си ги чете последователно, за да начертае някаква повърхност примерно и повече не се използват.

Отговор
в отговор на нOBAK #4

Re: VarArray

Използвай константи.

Mixy
Отговор
в отговор на нOBAK #5

Ако искаш интерпретатор, що не си полваш Бейсика?

Ако искаш интерпретатор, що не си полваш Бейсика?
Паскал е строго типизиран език и е извращение да ползваш variant.
Колегите са ти отоговорили конкретно на въпроса, но ако споделиш малко повече за идеите си - ще може по-точно да ти се отговори.
Ако предварително знаеш (както се вижда) типа на данните - най-добре да си направиш констанет масив от тип record:

type

pOneField = ^TOneField;
TOneField = record
InVal : tInVal; // (tivNone, tivHex, tivChr, tivBoo, tivDec);
CreateVal : tCreateVal; // (tcvNone, tcvBoo, tcvChr, tcvFix, tcvFlo);
Pos : integer;
Size : integer;
end;
const
cMsrIMF_Fields: array[0..3] of TOneField =
{ 0 F1 } (( InVal: tivHex; CreateVal: tcvFlo; Pos: 3; Size: 2),
{ 1 F2 } ( InVal: tivHex; CreateVal: tcvFlo; Pos: 5; Size: 2),
{ 2 F3 } ( InVal: tivHex; CreateVal: tcvFlo; Pos: 7; Size: 2),
{ 3 Asym } ( InVal: tivHex; CreateVal: tcvFlo; Pos: 9; Size: 2));


Редактирано от NikB на

Отговор
в отговор на NikB #6

Re: Ако искаш интерпретатор, що не си полваш Бейсика?

Благодаря на отзовалите се! Не искам интерпретатор. Почнах да уча как се прави графика с Делфи и единствено намерих стара книга, на която примерите са на Бейсик и някои от тях завършват с по няколко реда с DATA. И предположих, че макар и строго типизиран, Паскал има някакъв подобен оператор и ще мога лесно да ги тествам на Делфи. Ако някой знае за някаква книга за графика на Паскал/Делфи (с изключение на Марко Канту - снабдих се с нея), където да се описват формулите за чертане и с примери, ще съм благодарен да сподели. Също и как се програмират игри пак на Паскал/Делфи със стратегиите (примерно имаше мин-макс стратегия с поне 2 разновидности и доста други). Имаше за последното много хубава книга на С, ама докато се кандисам и свърши.

Отговор
в отговор на Hoвak #7

Re: Ако искаш интерпретатор, що не си полваш Бейси

Вече ти дадоха пример (variant), но какъвто и механизъм да има в Делфи, тая техника с нетипизираните променливи интерпретира данните в момента на изпълнението, което не е добре за производителността.

Отговор
в отговор на Hoвak #8

Re: Ако искаш интерпретатор, що не си полваш Бейсика?

Данните за чертане на графики обикновено са някакви координати (числа). Използвай масиви - те могат да бъдат статични и динамични, могат и да са константни.

Mixy
Отговор
в отговор на Mixy #9

Re: Ако искаш интерпретатор, що не си полваш Бейсика?

Благодаря на двамата!

Отговор
в отговор на Hoвak #10

Re: Ако искаш интерпретатор, що не си полваш Бейсика?

Графиката с Delphi е базирана на използването на TPoint и масиви от него (виж примерите от хелпа за Polyline, Rectangle и т.н.), така че няма нужда да измисляш наново велосипеда.
Чертаенето на графика е интересна наука, един начален поглед може да те вдъхнови: [линк]
Ако пък си решил да правиш игри с GUI графика просто чети Mastering Delphi - освен самото чертане там е чудесно показан и интерфейса към тази графика - запис/зареждане, влачене и т.н.

чети и дишай по-леко
Отговор
в отговор на Pechenia #11

Re: Ако искаш интерпретатор, що не си полваш Бейсика?

Много благодаря за адреса!

Отговор