AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sprach-Feature wird nicht unterstützt

Ein Thema von TomTaylor001 · begonnen am 24. Jan 2008 · letzter Beitrag vom 29. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
TomTaylor001

Registriert seit: 24. Jan 2008
3 Beiträge
 
#1

Sprach-Feature wird nicht unterstützt

  Alt 24. Jan 2008, 17:19
Hallo ich hab da ein Problem, vielleicht kann mir ja jemand dabei helfen?

Und zwar ich möchte eine Delphi Komponente im BCB nutzen. Bekomme aber immer eine Fehlermeldung
[[Pascal Fehler] GR_System.pas(274): Sprach-Feature wird nicht unterstützt: 'Object']

Kann mir vielleich jemand sagen was ich ändern muss

Grund des Fehlers: TGRCounter = object

Delphi-Quellcode:
unit GR_System;

interface

{$I Setting.inc}

uses
  SysUtils,
  {$IFDEF CLX}
  Qt, Types {$IFDEF LINUX}, Libc {$ELSE}, Windows{$ENDIF}
  {$ELSE}
  Windows
  {$ENDIF};

type

  //like the record do not call constructor to create a instance.
  //faster than class.
  TGRCounter = object
  private
    FStartValue, FStopValue: Int64;
    function GetElapsed: Extended;
    function GetCalibrate: Int64;
    function GetFrequency: Int64;
  protected
  public
    procedure Start;
    procedure Stop;
    function ReadMilliseconds: String;
    //the Elapsed TickCount value
    function ReadValue: Int64;

    //return the ns .
    property Elapsed: Extended read GetElapsed;
    property Calibrate: Int64 read GetCalibrate;
    property Frequency: Int64 read GetFrequency;
  end;


function StartCounter: TGRCounter;
function StopCounter(const aCounter: TGRCounter): Single;

implementation


var
  FCalibrate: Int64;
  FFrequency: Int64;
  {$IFDEF LINUX}
  FCalibrateUSleep: Int64;
  {$ENDIF}

function RDTSC: Int64;
asm
  dw 310Fh
end;

function GetFrequency: Int64;
begin
{$IFDEF LINUX}
  MeasureFrequency;
{$ENDIF}
{$IFDEF MSWINDOWS}
  QueryPerformanceFrequency(FFrequency);
{$ENDIF}
  Result:= FFrequency;
  {on LINUX this is the real Frequency, but not on Windows}
end;

{$IFDEF LINUX}
procedure CalibrateLinux;
var
  StartValue, StopValue: Int64;
  Val1, Val2, Val3, Val4, Val5: Int64;
begin
  USleep(1);

  StartValue:= RDTSC;
  StopValue:= RDTSC;
  Val1:= (StopValue - StartValue);

  StartValue:= RDTSC;
  StopValue:= RDTSC;
  Val2:= (StopValue - StartValue);

  StartValue:= RDTSC;
  StopValue:= RDTSC;
  Val3:= (StopValue - StartValue);

  StartValue:= RDTSC;
  StopValue:= RDTSC;
  Val4:= (StopValue - StartValue);

  StartValue:= RDTSC;
  StopValue:= RDTSC;
  Val5:= (StopValue - StartValue);

  FCalibrate:= (Val1 + Val2 + Val3 + Val4 + Val5) div 5;
end;

procedure CalibrateUSleep;
var
  StartValue, StopValue: Int64;
  Val1, Val2, Val3, Val4, Val5: Int64;
begin
  USleep(1);

  StartValue:= RDTSC;
  USleep(0);
  StopValue:= RDTSC;
  Val1:= (StopValue - StartValue);

  StartValue:= RDTSC;
  USleep(0);
  StopValue:= RDTSC;
  Val2:= (StopValue - StartValue);

  StartValue:= RDTSC;
  USleep(0);
  StopValue:= RDTSC;
  Val3:= (StopValue - StartValue);

  StartValue:= RDTSC;
  USleep(0);
  StopValue:= RDTSC;
  Val4:= (StopValue - StartValue);

  StartValue:= RDTSC;
  USleep(0);
  StopValue:= RDTSC;
  Val5:= (StopValue - StartValue);

  FCalibrateUSleep := (Val1 + Val2 + Val3 + Val4 + Val5)div 5;
end;

procedure MeasureFrequency;
var
  StartValue, StopValue: Int64;
  Val1, Val2, Val3, Val4, Val5: Int64;
begin
  CalibrateUSleep;

  StartValue:= RDTSC;
  USleep(1);
  StopValue:= RDTSC;
  Val1:= (StopValue - StartValue -FCalibrateUSleep);

  StartValue:= RDTSC;
  USleep(1);
  StopValue:= RDTSC;
  Val2:= (StopValue - StartValue -FCalibrateUSleep);

  StartValue:= RDTSC;
  USleep(1);
  StopValue:= RDTSC;
  Val3:= (StopValue - StartValue -FCalibrateUSleep);

  StartValue:= RDTSC;
  USleep(1);
  StopValue:= RDTSC;
  Val4:= (StopValue - StartValue -FCalibrateUSleep);

  StartValue:= RDTSC;
  USleep(1);
  StopValue:= RDTSC;
  Val5:= (StopValue - StartValue -FCalibrateUSleep);

  FFrequency := (Val1 + Val2 + Val3 + Val4 + Val5) div 5 * 100;
end;
{$ENDIF}

{$IFDEF MSWINDOWS}
procedure CalibrateWindows;
var
  StartValue, StopValue: Int64;
begin
  QueryPerformanceCounter(StartValue);
  QueryPerformanceCounter(StopValue);
  FCalibrate:= StopValue - StartValue;
end;
{$ENDIF}

function TGRCounter.GetElapsed: Extended;
begin
  Result := (FStopValue - FStartValue - FCalibrate) / FFrequency;
end;

function TGRCounter.GetFrequency: Int64;
begin
  Result := FFrequency;
end;

function TGRCounter.GetCalibrate: Int64;
begin
  Result := FCalibrate;
end;

function TGRCounter.ReadMilliseconds: String;
begin
  Result := FloatToStr(Round(1000000 * Elapsed) / 1000);
end;

function TGRCounter.ReadValue: Int64;
begin
  Result := FStopValue - FStartValue - FCalibrate;
end;

procedure TGRCounter.Start;
begin
{$IFDEF LINUX}
  FStartValue:= RDTSC;
{$ENDIF}
{$IFDEF MSWINDOWS}
  QueryPerformanceCounter(FStartValue);
{$ENDIF}
end;

procedure TGRCounter.Stop;
begin
{$IFDEF LINUX}
  FStopValue:= RDTSC;
{$ENDIF}
{$IFDEF MSWINDOWS}
  QueryPerformanceCounter(FStopValue);
{$ENDIF}
end;

{ Timer Routines ==============================================================}

function StartCounter: TGRCounter;
begin
  Result.Start;
end;

function StopCounter(const aCounter: TGRCounter): Single;
begin
  //Result := 0.0;
  aCounter.Stop;
  Result := aCounter.Elapsed;
end;

initialization
  {$IFDEF LINUX}
  CalibrateLinux;
  {$ENDIF}
  {$IFDEF MSWINDOWS}
  CalibrateWindows;
  {$ENDIF}
  GetFrequency;
end.
Gruß tom
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Sprach-Feature wird nicht unterstützt

  Alt 24. Jan 2008, 17:28
TGRCounter = object class
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Sprach-Feature wird nicht unterstützt

  Alt 24. Jan 2008, 17:28
Das soll C++ sein? O_o

Also object ist ein Datentyp, der noch aus TurboPascal-Zeiten stammt und heute meistens nicht mehr verwendet wird. Das ganze ist so eine Art Mittelding zwischen Klasse und Record, es kann Methoden mit Sichtbarkeitsstufen besitzen, muss aber nicht erzeugt und freigegeben werden (bzw. das erledigt der Compiler).

Mir ist nicht ganz klar, warum object in deiner Delphi-Version nicht unterstützt wird, welche hast du denn? Falls du Delphi.NET verwendest, ist die Sache natürlich klar, das sieht aber eher nach Win32 aus.

Unter Win32 und mit Delphi>=2006/TurboDelphi würde ich einfach mal private/public/protected löschen und statt "object" einen "record" verwenden, dann geht zwar die Kapselung flöten, aber das ist nicht wirklich schlimm, und als schneller Workaround taugt es allemal.

@mkinzler: Möglich, aber dann muss er auch den Konstruktor und Free aufrufen, also größere Codeteile ändern.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
TomTaylor001

Registriert seit: 24. Jan 2008
3 Beiträge
 
#4

Re: Sprach-Feature wird nicht unterstützt

  Alt 24. Jan 2008, 17:40
das ist nicht der cpp code sondern der delphi code.
ich versuche es mal mit class ich hoffe es klappt

gruß tom
  Mit Zitat antworten Zitat
TomTaylor001

Registriert seit: 24. Jan 2008
3 Beiträge
 
#5

Re: Sprach-Feature wird nicht unterstützt

  Alt 24. Jan 2008, 17:42
Danke es klappt. Ich glaube ich muss mal mit delphi anfangen.

gruß tom
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Sprach-Feature wird nicht unterstützt

  Alt 24. Jan 2008, 18:08
Zitat von TomTaylor001:
Danke es klappt.
Nur, wenn das Ding nicht benutzt wird. Und dann wäre es vielleicht besser, es ganz auszukommentieren statt es halb zu reparieren.
Einfach an einer Stelle object durch class ersetzen reicht jedenfalls nicht.

Zitat von TomTaylor001:
Ich glaube ich muss mal mit delphi anfangen.
Ich vermute, das wäre für nen BCB-Nutzer ne Super-Idee.

Uli.
Uli Gerhardt
  Mit Zitat antworten Zitat
MarioR

Registriert seit: 11. Nov 2005
7 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Sprach-Feature wird nicht unterstützt

  Alt 29. Mai 2008, 13:12
Hallo,

ich habe ein ähnliches, besser das gleiche Problem.

Von einem Kollegen, der in Delphi programmiert habe ich ein paar
*.pas-Units bekommen. Diese möchte ich in mein C++Builder-Projekt
einbinden.

Beim kompilieren bekomme ich den Fehler.

Was muß ich im Delphi-Quelltext umstellen, daß es der C++Builder6
schluckt?

Gruß Mario
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.608 Beiträge
 
#8

Re: Sprach-Feature wird nicht unterstützt

  Alt 29. Mai 2008, 13:16
Zitat von MarioR:
Beim kompilieren bekomme ich den Fehler.

Was muß ich im Delphi-Quelltext umstellen, daß es der C++Builder6
schluckt?
Okay.. meine Glaskugel meint, dass Du mit 'bekomme ich den Fehler' meinst, dass Du die Meldung "Sprach-Feature wird nicht unterstützt" bekommst. Sollte meine Glaskugel kaputt sein sag mir das bitte gleich.

Was Du an Deinem Quelltext umstellen musst.. hrm.. gute Frage. Keine Ahnung? Solange Du die Quellen nicht zeigst wird Dir das aber auch niemand anderes sagen können.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
MarioR

Registriert seit: 11. Nov 2005
7 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Sprach-Feature wird nicht unterstützt

  Alt 29. Mai 2008, 13:48
Zitat von Phoenix:
Okay.. meine Glaskugel meint, dass Du mit 'bekomme ich den Fehler' meinst, dass Du die Meldung "Sprach-Feature wird nicht unterstützt" bekommst. Sollte meine Glaskugel kaputt sein sag mir das bitte gleich.

Was Du an Deinem Quelltext umstellen musst.. hrm.. gute Frage. Keine Ahnung? Solange Du die Quellen nicht zeigst wird Dir das aber auch niemand anderes sagen können.
... Ja deine Glaskugel hat recht, deshalb habe ich auch in diesen Thread gepostet.

Den Quellcode posten, da muß ich erst meinen Kollegen fragen, da es sein Eigentum, bzw. das unserer Firma ist.

Vom Prinzip her crasht es an der Stelle, wo steht ... = object
Delphi-Quellcode:
type
  TGRCounter = object [b]<<<<<[/b]
  private
  ...
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.608 Beiträge
 
#10

Re: Sprach-Feature wird nicht unterstützt

  Alt 29. Mai 2008, 13:52
Tja.. da würde ich das eher an Deinen Kollegen zurückgeben.
Der soll Dir compilierfähigen Code geben. Das ist eigentlich nicht Dein Problem, oder?

Denn wie gesagt - nur object durch class ersetzen ist nicht unbedingt das Heilmitel.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz