AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi nach C übersetzen [ gelöst ]
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi nach C übersetzen [ gelöst ]

Ein Thema von Corpsman · begonnen am 31. Mär 2010 · letzter Beitrag vom 31. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#1

Delphi nach C übersetzen [ gelöst ]

  Alt 31. Mär 2010, 10:27
Guten Morgen,

Von C nach Delphi übersetzen ist ja irgendwie einfach, man sieht die Deklarationen und "Rät" dann mehr oder weniger das Richtige Äquivalent in Delphi / FPC oder googelt den unbekannten Ausdruck.

Nun hatte ich das Glück meine Diplomarbeit in FPC schreiben zu dürfen. Leider jedoch will das Institut für das ich schreibe, dass eine C Library eingebunden werden kann.

Also habe ich mich hingesetzt und eine FPC Library erzeugt, welche wunderbar in meinem Programm Funktioniert. Von dieser Grundlage aus habe ich nun versucht eine *.h Datei zu erzeugen.

Mein Problem ist nun, das ich keine Ahnung habe, ob meine zusammen gegoogelte Header File auch wirklich stimmt.

Wenn sich hier irgend jemand der C kann erbarmen würde sich mein "Werk" mal an zu sehen. Und evtl. den ein oder anderen Fehler auf zu decken wäre das echt super.

Mein gcc kompiliert es ohne eine Ausgabe, kann aber auch gut sein, dass ich nicht weis wie man den gcc dazu bringt eine Ausgabe zu erzeugen..
Angehängte Dateien
Dateityp: h c_lib_107.h (6,7 KB, 2x aufgerufen)
Dateityp: c c_lib_152.c (6,5 KB, 2x aufgerufen)
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Delphi nach C übersetzen

  Alt 31. Mär 2010, 10:35
Du hast einen generellen Fehler drin.
In Delphi ist Pointer und utypisierter Pointer.
Bei deiner Übersetzung hast du jedoch "int *Address" draus gemacht was ein typisiert wäre (nämlich ein Pointer auf einen Integer). Richtig wäre hier aber "void *Address" wenn es 1 zu 1 übersetzt werden soll und es sich nicht um einen Pointer auf einen Integer handelt.

Und dann übersetzt du Single einmal als Single und später übersetzt du Extended (den Delphityp) auch als Single. Ein Extended hat doch eine andere Größe als ein Single.
Und noch später übersetzt du Single plötzlich als float. Also bei den Fließkommatypen bringst du ein richtiges Durcheinander in die Sache.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Delphi nach C übersetzen

  Alt 31. Mär 2010, 10:44
aha,

ich hatte Pointer c gegoogelt und nur int *blub gefunden

Das mit Single float war noch ein Copy Paste Fehler

Extended hatte ich als double übersetzt, das stimmt doch, oder ?

Wo habe ich denn Extended als Single übersetzt ?

Hab im 1. Post die bis jetzt Korrigierte Version Aktuallisiert.

Und noch was:

Warum mus ich die Typedefs in der *.c und in der *.h Datei rein schreiben ?
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Delphi nach C übersetzen

  Alt 31. Mär 2010, 10:46
Zitat:
Extended hatte ich als double übersetzt, das stimmt doch, oder ?
Leider nein.

Soweit ich weiß ist SizeOf(Double) = 8 und SizeOf(Extended) = 10.

Ich glaube in C gibt es kein Gegenstück zu Extended. (Bin mir da aber nicht sicher!)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Delphi nach C übersetzen

  Alt 31. Mär 2010, 10:50
Zitat von Corpsman:
Warum mus ich die Typedefs in der *.c und in der *.h Datei rein schreiben ?
Wer behauptet so etwas? Typdefs und externe Declarationen gehören nur in die H-Datei und diese wird dann in die C-Datei includiert.

Schau mal hier: http://www.grin.com/e-book/96293/c-programmierung
Da sind einige Typen aufgeführt mit Größenangabe.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Delphi nach C übersetzen

  Alt 31. Mär 2010, 10:50
ARG,

ok, dann nehm ich in der Delphi / FPC Variante Extended raus und schreibe stattdessen auch Double, zumindest unter FPC gibts das ja.

@SirThornberry

wusste nicht das man das extra angeben muss, nu ist's drin *g*
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Delphi nach C übersetzen

  Alt 31. Mär 2010, 10:56
Hier noch eine Seite zur Typenübersicht:
http://archiv.raid-rush.ws/t-15989.html

Wenn ich mich richtig entsinne hast du einen Delphi-Single auch als Single in C-Definiert. Das ist falsch. Ein Single ist in C soweit ich weiß kein Fließkommatyp sondern ein Ganzzahlentyp.

Am besten listest du einmal auf was für Grundtypen du hast und wie du diese übersetzen würdest. Ich glaube da bekommst du eher Hilfe als wenn jeder erst deine C, und H Dateien runterladen muss und sich diese Stück für Stück ansehen muss.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Delphi nach C übersetzen

  Alt 31. Mär 2010, 11:01
Ich habe folgende Typen übersetzt :
Delphi-Quellcode:
Paskal -> C
  
Single -> float
Int64 -> Long Long
Cardinal -> unsigned long int
double -> double
var x: integer -> int *x
var n: TVector2-> Tvector2 *n
und natürlich die beiden Type defs
Delphi-Quellcode:
// Paskal
// Type
// TKillCallback = Procedure(Address: Pointer); cdecl;
// C
typedef void TKillCallback(void *Address);

// Paskal
// Tvector2 = Record
// x: Single;
// y: Single;
// End;
// C
typedef struct{
        float x;
   float y;
        }
Tvector2;
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Miolin

Registriert seit: 27. Okt 2008
Ort: Altena
60 Beiträge
 
Delphi 2009 Enterprise
 
#9

Re: Delphi nach C übersetzen

  Alt 31. Mär 2010, 11:30
Der Datentyp Single ist in C auch eine Fließkommazahl, aber mit einfacher Genauigkeit, und der Double/Float mit doppelter Genauigkeit...
Jan-Oliver Ohloff
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Delphi nach C übersetzen

  Alt 31. Mär 2010, 11:41
Zitat:
von http://archiv.raid-rush.ws/t-15989.html

float 4 Byte 1.2e-38 bis 3.4e38
double 8 Byte 2.2e-308 bis 1.8e308
Bist du dir da sicher ?

Wenn ich die Deklaration Single im C, Code angebe, sagt gcc dass er weitere angaben zur Deklaration von single haben will.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  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 17:08 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