![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Си => Паскаль
kernel © (2008-07-24 11:11:00)Доброго времени суток. Не могу перевести простой Си`шный код на Паскаль :'(
Если кто может, помогите, пожалуйста, перевести на Pascal следующее:
unsigned char *sccBuffer = (unsigned char *) BADDR;
где-то в .h файле увидел
unsigned char BADDR[512];
Пишу на "нашем" языке так:
sccBuffer: ^Byte;
Но что делать с куском = (unsigned char *) BADDR;не понимаю.
Далее,
struct direntry {
unsigned char deName[8];
#define SLOT_EMPTY 0x00
....
}
Пишу так:
type = record // а может быть надо packed record?!
deName: array [8] of Byte;
Но что делать с #define SLOT_EMPTY 0x00? Не писать же в record
const SLOT_EMPTY = $00;?!
И чем отличается
typedef struct{...}TChtoNibud;
от
struct ChtoNibud {...};
Какие будут отличия, если перевести это на Паскаль?
ЗЫ: извиняюсь, если ветку создал где-то не там
kernel (2008-07-24 15:19:00) [21]Спасибо еще раз :)
А почему direntry = packed record ? Как определить просто "record" или "packed record"?
Игорь Шевченко (2008-07-24 14:59:00) [22]
> sccBuffer := PBYTE(BADDR);
Тогда еще проще
sccBuffer := @BADDR
clickmaker (2008-07-24 13:02:00) [23]> sccBuffer - это же 1 байт
вообще-то это 4 байта - указатель
kernel (2008-07-24 12:56:00) [24]Бррр.. Что-то я запутался :)
sccBuffer := PBYTE(BADDR);
sccBuffer - это же 1 байт, а BADDR - это 512 байт.
Ведь 512 байт нельзя же присвоить 1 байту?!
Игорь Шевченко (2008-07-24 12:34:00) [25]
> А если PBYTE нет, можно написать так:
PBYTE есть.
Если нет, то
type
PByte = ^Byte;
kernel (2008-07-24 12:28:00) [26]Спасибо большое.
> Игорь Шевченко © (24.07.08 11:27) [2]
А если PBYTE нет, можно написать так:
var
sccBuffer: ^BYTE;
...
sccBuffer := ^BYTE(BADDR);
...
?
Игорь Шевченко (2008-07-24 11:27:00) [27]
> unsigned char *sccBuffer = (unsigned char *) BADDR;
> где-то в .h файле увидел
> unsigned char BADDR[512];
> Пишу на "нашем" языке так:
> sccBuffer: ^Byte;
> Но что делать с куском = (unsigned char *) BADDR; не понимаю.
>
> Далее,
> struct direntry {
> unsigned char deName[8];
> #define SLOT_EMPTY 0x00
> ....
> }
> Пишу так:
> type = record // а может быть надо packed record?!
> deName: array [8] of Byte;
> Но что делать с #define SLOT_EMPTY 0x00? Не писать же в
> record
> const SLOT_EMPTY = $00;?!
var
sccBuffer: PBYTE;
...
sccBuffer := PBYTE(BADDR);
...
> struct direntry {
> unsigned char deName[8];
> #define SLOT_EMPTY 0x00
> ....
> }
const
SLOT_EMPTY = 0;
type
direntry = packed record
deName: array[0..7] of Byte;
...
end;
МистерТ (2008-07-24 11:24:00) [28]по поводу "чистого си", не уверен, т.к. учил только уже приплюснутую версию, да и судя по коду программист сам был "еще тот", но рискну предположить:
> unsigned char BADDR[512];
> unsigned char *sccBuffer = (unsigned char *) BADDR;
PBaddr = ^TBaddr;
TBaddr = array[0..511] of Byte;
...
BADDR : TBaddr;
sccBuffer : PBaddr;
...
sccBuffer := @BADDR;
> struct direntry {
> unsigned char deName[8];
> #define SLOT_EMPTY 0x00
> ....
> }
const
SLOT_EMPTY = 0;
type
TDirEntry = record
deName : array[0..7] of Byte;
...
end;
> И чем отличается
> typedef struct{...}TChtoNibud;
> от
> struct ChtoNibud {...};
> Какие будут отличия, если перевести это на Паскаль?
При переводе на паскаль - это равнозначные конструкции...
а так, первый вариант - plain-c, второй - более С++