C w Delphi

Odpowiedz Nowy wątek
2011-08-11 20:05
0

Witam
Potrzebuje napisać ten kawałek kodu w delphi

typedef void _Point(int typ, char* text);
 
struct TData
{
_Point *Point;
int line;
char text[256];
};
TData = record
Point : ^_Point;
line : integer;
text : array [1..256] of char;
end;

Tutaj problem z parametrem point którym jest funkcja _Point

procedure _Point (typ :Integer; array [1..256] of char);

I taka funkcja

void Thread(TData *data)
{
data->Point(data->line, data->text);
}

Jest możliwości napisania tego w Delphi 7?

Pozostało 580 znaków

2011-08-11 20:17
koksu
0

Nie wiem czy zamiast ^ nie powinno być @.

poza tym próbowałeś to kompilować? Jeżeli jest błąd, to co mówi delphi?

Pozostało 580 znaków

2011-08-11 20:21
0

Delphi mówi
"[Error] Unit1.pas(31): Undeclared identifier: '_Point'"
z @
"[Error] Unit1.pas(31): Type expected but '@' found"

Pozostało 580 znaków

2011-08-11 20:47
koksu
0

To znaczy że nie zadeklarowałeś procedury albo jej nie zdefiniowałeś.
Pokaż kod jaki już napisałeś.

Pozostało 580 znaków

2011-08-11 21:25
0

Dodałem ją

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
TData = packed record
Point : ^_Point;
line : integer;
text : array [1..256] of char;
end;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  procedure _Point (line :Integer; text:String);
 
implementation
 
{$R *.dfm}
 
procedure Thread(data : TCast);
var
Datas : ^TCast;
begin
Data.Cast := @datas.typ ;
begin
 
end;

Pozostało 580 znaków

2011-08-11 21:34
0

A gdzie deklaracja funkcji? Czy jej nie wkleiłeś. Jeśli jej nie ma to może najpierw ogarnij podstawy Delphi.


Pozostało 580 znaków

2011-08-11 21:56
0

Dd początku

typedef void _Point(int line, char* text);
 
struct TData
{
    _Point *Point;
     int line;
     char text[256];
};
 
void Thread(TData *data)
{
    data->Point(data->line, data->text);
}
 

Ta procedura to typ, to gdzie mam ja zdefiniować
Tdata.Point jest ta procedura

Pozostało 580 znaków

2011-08-11 22:42
0

tak ?

type
  _Point = procedure(typ :Integer; text: array of char);
 
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  TData = record
    Point : _Point;
    line : integer;
    text : array [1..256] of char;
  end;

Ale na niewiele się to zda, bo jeszcze trzeba przypisać adres funkcji temu wskaźnikowi. Może ktoś inny się wypowie :>

edytowany 1x, ostatnio: maciejmt, 2011-08-11 22:44

Pozostało 580 znaków

2011-08-11 22:50
2

powinno być tak:

type _Point = procedure(typ:integer; text:pansichar); cdecl;
 
type TData = record
  Point:_Point;
  line:integer;
  text:array[0..255] of char;
end;

Pozostało 580 znaków

2011-08-12 08:14
0

Tak teraz się kompiluje ale czy wszystko zadziała
to nie wiem, jak by co to jeszcze napisze
dzięki

Pozostało 580 znaków

2011-08-12 09:22
0

jakby nie działało spróbuj:
text:PChar
ale możliwe że pchar to to samo co pansichar (nie sprawdzałem)


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 1x, ostatnio: krwq, 2011-08-12 09:22
PChar jest wskaźnikiem na Char; PAnsiChar jest wskaźnikiem na AnsiChar; w Delphi dla Win32 Char == AnsiChar - Patryk27 2011-08-12 09:50
{...} w Delphi dla Win32 Char = AndiChar {...} - nie do końca, zależy w którym Delphi, w kilku najnowszych już chyba PWideChar czy coś z utf'em, ale na bank nie AnsiChar. - b0bik 2011-08-14 22:10

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0