Forum: PC-Programmierung Übersetzung C in Deutsch gesucht


von Mike K. (mike_kr)


Lesenswert?

Hallo Leute,

ich habe eine C-Datei, die ich aber nicht nutzen kann, weil ich kein C 
kann. Komme aus der Delphi/Basic-Ecke.
Nun ich suche ich einen "Übersetzer". Natürlich nicht umsonst.
Wer kann zb sowas
1
        case MD_STATUS_WAITING_FOR_TAG:
2
            if ( d == MD_SERIALOUT_BINARY_TAG || d == MD_SERIALOUT_BINARY_BOOSTPID_TAG
3
                 || d == MD_SERIALOUT_BINARY_TAG_N75_DUTY_MAP || d == MD_SERIALOUT_BINARY_TAG_N75_SETPOINT_MAP
4
                 || d == MD_SERIALOUT_BINARY_TAG_ACK  || d == MD_SERIALOUT_BINARY_TAG_N75_PARAMS
5
                 || d == MD_SERIALOUT_BINARY_TAG_GEAR_RATIO_6G ) {
6
                status = MD_STATUS_RECEIVING;
7
                framelength = d;
8
                rcvData.asBytes[index] = d;
9
                (*sdata)[index]=d;
10
                index++;
11
            } else {
12
                qDebug() << "(WARN) expected tag but did not get one! d=" << d;
13
                framelength = 0;
14
            }
15
            break;

soweit kommentieren, daß verständlich ist?

Sind einige Dutzend Zeilen.
Ist ein Programm zum Auslesen und Umwandeln von Daten aus 
Datenübertragung per Schnittstelle.

Danke :)

: Bearbeitet durch Moderator
von ich (Gast)


Lesenswert?

HI,
vll. würde es helfen wenn du auch den Rest Angibts, sonnst ist es auch 
nur ein Raten von uns.
Sonst google halt mal anch den Makros
MfG
ich

von ich (Gast)


Lesenswert?

Hi,
dass ist garantiert kein C sondern C++!
Also nur ausschnitt kommentieren funkt nicht, da was ausen rum ist die 
Funktion verrät.
Jetzt zum Helfen: (es gibt genau 4 Treffer bei google wenn ich nach: 
MD_SERIALOUT_BINARY_TAG suche.)
http://multidisplay.googlecode.com/svn-history/r460/trunk/mUI/src/MdSerialComBinary.cpp

Es geht anscheinend um eine Statemachine.
Im Zustand: MD_STATUS_WAITING_FOR_TAG
Wir abgefragt ob d eins von MD_SERIALOUT_BINARY_TAG, 
MD_SERIALOUT_BINARY_BOOSTPID_TAG, MD_SERIALOUT_BINARY_TAG_N75_DUTY_MAP, 
MD_SERIALOUT_BINARY_TAG_N75_SETPOINT_MAP, MD_SERIALOUT_BINARY_TAG_ACK, 
MD_SERIALOUT_BINARY_TAG_N75_PARAMS ist. Wenn das Zutrifft wird die 
Framelength auf den Wert von d gesetzt und Objekt rcvData in das indexte 
Byte d geschrieben. sdata wird derefenziert und dann aufs indexte 
Element d geschrieben.
Index wird inkrementiert
Wenn d nicht in der Liste da oben ist wird eine Debug ausgabe generiert.
MfG
ich

von Peter II (Gast)


Lesenswert?

Mike Kr schrieb:
> Komme aus der Delphi/Basic-Ecke.

so viel anders ist Delphi nun auch nicht.

==  ^ =
= ^ :=

von Besucher (Gast)


Lesenswert?

Wäre es nicht sinnvoller du lässt es dir gleich in "Pascal" statt 
"Deutsch" übersetzen?

Alles groß geschriebene solten Konstanten sein, such mal nach einem 
"#define". "||" bedeutet "oder"
1
case blablub of
2
  MD_STATUS_WAITING_FOR_TAG:
3
  begin
4
    if d in [TAG, DUTY, xyz] then
5
    begin
6
      framelength := d;
7
      rcvData.asBytes[index] := d;
8
      // Für den Pointer Krempel bräuchte man den Rest vom Code
9
      inc(index);
10
11
    end
12
    else
13
    begin
14
      writeln("(WARN) ...");
15
      framelength := 0;
16
    end;
17
  end;
18
end;

Mit dem Konstanten-Set bin ich mir grad nicht sicher. Wenn das nicht 
geht nimm "if (d = a) or (d = b) then" wie auch im C-Code.

von Mike K. (mike_kr)


Lesenswert?

@ich ja, das ist das Multidisplay :) Und genau so meinte ich es. Also 
wer hat Interesse? :)

von ich (Gast)


Lesenswert?

Ich glaube du hast nicht verstanden ich habs dir schon in Deutsch 
übersetzt. Und zwar fast schon in reinem Prosa oder Hirn.
Wie oben schon stand lesen sollt man das noch, fast egal von Welcher 
höheren Programmiersprache man kommt, sind ja keine Trinären Operatoren 
oder so lustige spezial Dinge drin. das einzige knifflige ist 
(*sdata)[index]. was aber nur ein Zeiger auf ein Array ist. Und ich hab 
vergessen:
Wenn die If zutrifft geht die STatemachine in dne Zustand: 
MD_STATUS_RECEIVING.
MfG
ich

von Mike K. (mike_kr)


Lesenswert?

ähm...das war aber nur ein Bruchteil des Textes....

von ich (Gast)


Lesenswert?

ähm, ja aber alles was du geposted hast!
Wir sollen dir alles Kommentieren/Übersetzten?
ohne mich
MfG
ich

von Mike K. (mike_kr)


Lesenswert?

In dem man mir einer email-Adresse gibt und alles weitere dann geklärt 
wird. Ich glaube kaum, daß du dich hinsetzt und kostenlos ein paar 
Hundert Zeilen übersetzt und Fragen dazu beantwortest, oder? :)

von Mark B. (markbrandis)


Lesenswert?

Mike Kr schrieb:
> Sind einige Dutzend Zeilen.
> Ist ein Programm zum Auslesen und Umwandeln von Daten aus
> Datenübertragung per Schnittstelle.

Vielleicht ist es leichter, die gewünschte Funktionalität selbst in 
Delphi umzusetzen?

von Skyper (Gast)


Lesenswert?

... das "qDebug()" läßt mich auf Qt schließen, was dann wiederum C++ mit 
einschließt...

von Peter II (Gast)


Lesenswert?

Skyper schrieb:
> ... das "qDebug()" läßt mich auf Qt schließen, was dann wiederum C++ mit
> einschließt...

dafür muss man nicht über den QT Umweg denken
1
<<

ist c++ genug.

von R. B. (britzi)


Lesenswert?

Peter II schrieb:
> Skyper schrieb:
>> ... das "qDebug()" läßt mich auf Qt schließen, was dann wiederum C++ mit
>> einschließt...
>
> dafür muss man nicht über den QT Umweg denken
>
>
1
> <<
2
>
>
> ist c++ genug.

Naja... wer weiß, wie der restliche Code aussieht.

Möglicherweise ist er gespikt mit Funktionen aus Qt-Bibliotheken.
Insofern ist der Hinweis nicht verkehrt!

von Gerhard (Gast)


Lesenswert?

Bei "N75_DUTY_MAP" denke ich an ein VAG-Fahrzeug mit Turbolader. Liege 
ich da richtig?

:)

von Mike K. (mike_kr)


Lesenswert?

@MarkBrandis Da bin ich ja dabei, nur leider existiert keine Doku mehr, 
sondern "nur" der funktionierende Quellcode in C++

von Peter II (Gast)


Lesenswert?

man könnte auch überlegen, aus dem C++ code eine dll zu machen und diese 
kannst du dann von Delphi aus nutzen.

von Marcus W. (marcusaw)


Lesenswert?

Peter II schrieb:
> man könnte auch überlegen, aus dem C++ code eine dll zu machen und
> diese kannst du dann von Delphi aus nutzen.

Das klappt ebenfalls nnur, wenn man C++ spricht.


Wieso stellst du nicht mal die komplette C-Datei hier rein und wir 
versuchen es zusammen. Oder du stellst die C-Datei hier rein und jemand 
einzelnes versucht es für einen Obulus. Oder muss man ne NDA 
unterschreiben um dir zu helfen?

von Oliver S. (oliverso)


Lesenswert?

Marcus W. schrieb:
> Wieso stellst du nicht mal die komplette C-Datei hier rein und wir
> versuchen es zusammen.

Wie oben schon geschrieben wurde, ist das Qt, und das geht halt nur mit 
C++.

Die Umsetzung des Nicht-Qt Teils ist dagegen trivial.

Peter II schrieb:
> ==  ^ =
> = ^ :=

Das ist schon bald alles. Das sollte jeder Delphi-Programmierer 
hinbekommen.

Oliver

von Peter II (Gast)


Lesenswert?

Marcus W. schrieb:
> Peter II schrieb:
>> man könnte auch überlegen, aus dem C++ code eine dll zu machen und
>> diese kannst du dann von Delphi aus nutzen.
>
> Das klappt ebenfalls nnur, wenn man C++ spricht.

andersrum. wenn es C ist, dann ist das DLL Interface viel einfacher. Bei 
C++ müsste man sich überlegen ob man COM verwendet.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter II schrieb:
> wenn es C ist, dann ist das DLL Interface viel einfacher.

Es ist fast schon trivial einfach, C++-Code mit einem C-Interface zu 
versehen, so daß es keinen Grund gibt, COM einzusetzen.

von Karl H. (kbuchegg)


Lesenswert?

Mike Kr schrieb:
> @MarkBrandis Da bin ich ja dabei, nur leider existiert keine Doku mehr,
> sondern "nur" der funktionierende Quellcode in C++

Ja. Und?

Wenn der Rest auch so aussieht, und ich hage da keinen grossen Zweifel, 
dann ist der recht trivial zu lesen. Da muss ich ehrlich gesagt schon an 
deinen Pascal/Delphi Fähigkeiten zweifeln, wenn dir das groß 
SChwierigkeiten macht. Denn die Hälfte der Sachen ergibt sich recht 
zwangsläufig aus der Protokollbeschreibung der Übertragung bzw. folgt 
logisch daraus wie 99% aller Protokolle arbeiten. Da ist auf logischer 
Ebene nichts wirklich überraschendes dabei. D.h. man kann aus dem, was 
man logischerweise an einer Stelle erwarten würde, recht schnell darauf 
schliessen, was man da wohl im Code vor sich sieht, und damit dann die 
für einen Nicht-C++ Programmierer ungewohnten 'Sonderzeichen' insofern 
entziffern, dass man seine Erwartung mit einer Google Recherche auf 
Richtigkeit überprüft.

Übrigens dokumentiert man eine Statemaschine am besten nicht als 
deutschen Text, sondern in Form eines Diagrammes. Das ist am aller 
übersichtlichsten.
Statemachine

(Die Sache mit dem Pointer ist höchst wahrscheinich auch recht simpel. 
sdata ist ein Pointer auf einen Speicherbereich, den der Benutzer der 
Statemaschine zur Verfügung stellen muss und in dem die Statemaschine 
das Empfangene mitschreibt. So zumindest wäre meine Erstlings-Hypothese 
wenn ich ein derartiges Konstrukt in einer Statemaschine sehen würde.)

: Bearbeitet durch User
von micha (Gast)


Lesenswert?

Eventuell funktionieren auch ein paar der C/C++ --> Pascal "Übersetzer"; 
ich glaube bei FPC gibt es da ein paar Tools (zumindest für C/C++ 
Header). Aber, wie schon gesagt, soooo groß sind der Unterschiede bei 
Pascal/C/C++ nicht, da kommt man mit etwas nachdenken schnell dahinter)

von Kopfschüttel (Gast)


Lesenswert?

Kann mir mal jemand erklären wo ich Infos über die Progammiersprache 
'Deutsch' bekomme?

von Peter II (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Es ist fast schon trivial einfach, C++-Code mit einem C-Interface zu
> versehen, so daß es keinen Grund gibt, COM einzusetzen.

aber nur wenn du wenig Daten austauschen muss. Vermutlich kann Pacal mit 
z.b. QString nichts anfangen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter II schrieb:
> Vermutlich kann Pacal mit z.b. QString nichts anfangen.

Dann verpackt man die halt in normalen C-Strings, denn mit QString kann 
nichts etwas anfangen, was nicht auch Qt ist.

Für derlei Aufgaben ist ein Interfacewrapper da.

von Pat W. (frankp)


Lesenswert?

Verstehe die Diskussion nicht.
Er bietet einen bezahlten Job an, oder?
Er hat einen kleinen Ausschnitt gebracht, damit derjenige, der es dann 
letztendlich erledigen soll, nicht oder nur wenig überrascht wird.

Man man man....?

von Purzel H. (hacky)


Lesenswert?

@ Mike Kr (mike_kr)

Guter Mann ... Das absolute Minimum, was man als Delphi Programmierer 
koennen muss, ist die Schreibweise von C begriffen zu haben ... also 
los.
Dann gibt es eine RAD Studio version, die auch C/C++ einbinden kann. 
Dann kann man etwas testen & probieren. Wenn man dann etwas besser ist 
kann man auch eine C DLL einbinden. Oder eben neu schreiben.

zu guter letzt gibt es auch C-zu-Delphi Translatoren. Das letzte Mal, 
als ich die sah, waren sie nicht gut, ist aber auch schon einige Jahre 
her.

von Karl H. (kbuchegg)


Lesenswert?

Pat Wat schrieb:
> Verstehe die Diskussion nicht.
> Er bietet einen bezahlten Job an, oder?
> Er hat einen kleinen Ausschnitt gebracht, damit derjenige, der es dann
> letztendlich erledigen soll, nicht oder nur wenig überrascht wird.
>
> Man man man....?


Weil das
> ... soweit kommentieren, daß verständlich ist?
ein Fass ohne Boden ist, wenn er mit dem simpel geschriebenen Code nicht 
klar kommt.

von Oliver S. (oliverso)


Lesenswert?

Mike Kr schrieb:
> Natürlich nicht umsonst.

Pat Wat schrieb:
> Er bietet einen bezahlten Job an, oder?

Fakt ist, der TO hat irgenwoher einen Quellcode, hat keine Ahnung von 
Programmierung, und will irgendwas, was er selber nicht einschätzen 
kann.

Das wird wohl auf "oder" hinauslaufen...

Oliver

von Paul Baumann (Gast)


Lesenswert?

Siebzehn Zu Fuenfzehn schrieb:
> Guter Mann ... Das absolute Minimum, was man als Delphi Programmierer
> koennen muss, ist die Schreibweise von C begriffen zu haben ... also
> los.

Wie kommst Du darauf?
Wenn jemand Algol, Pascal oder nun Delphi oder Lazarus Syntax 
beherrscht,
dann hat er das deshalb gelernt, weil im C zu kryptisch war und ist.

MfG Paul

von Paul Baumann (Gast)


Lesenswert?

Edith sagt: Weil ihm C zu kryptisch....

von Bernd K. (prof7bit)


Lesenswert?

Rufus Τ. Firefly schrieb:
>> Vermutlich kann Pacal mit z.b. QString nichts anfangen.
>
> Dann verpackt man die halt in normalen C-Strings,

Wenn mans nach Pascal portiert dann nimmt man lieber normale Strings, 
keine C-Strings. Ansonsten könnte mans auch gleich in C++ lassen so wie 
es ist und sich nur einen Wrapper bauen für die ganze lib, denn in 
Pascal ohne Not mit nullterminierten Strings herumzuwürgen wäre 
vollkommen widersinnig.

: Bearbeitet durch User
von Mike K. (mike_kr)


Lesenswert?

Okay, nachdem sich nun die Trolle und Wichtigmacher ausgetobt haben 
(Wofür gibt es eigentlich einen Moderator???) kann nun wieder zum 
eigentlichen Thema zurück gekommen werden. Danke

Wie gesagt, ich kann kein C++ und die Sache mit den Sonderzeichen wurde 
schon gut erkannt.

Vielleicht kann die Sache auch abgekürzt werden: Der Quelltext einfach 
kurz in ein Verständliches System bringen, kurz erklären um was es geht, 
wie es gemacht wurde etc. Das ist ganz sicher recht kurz gemacht, da es 
nur um das Datenprotkoll und die "Umrechnung" der Daten geht....

von Peter X. (peter_x)


Lesenswert?

Mike Kr schrieb:
> Wie gesagt, ich kann kein C++ und die Sache mit den Sonderzeichen wurde
> schon gut erkannt.

Troll, hahahaha...

Ich kann auch kein C/C++, war aber in der Lage, den Meteo... in Pascal 
zu übersetzen.
Das können nur Leute, die logisch denken können. Denen ist egal, ob sie 
in (Schweine-C), Basic, Pascal oder Suaheli kodieren müssen.

Warum?
Zuerst wird ein Struktogramm erstellt, welches alle Verzweigungen 
enthält. Eine formale Programmiersprache. Ein Inschenör macht es genaus 
so. Für das Kodieren in welcher Sprache auch immer hat er seine HiWi's.

von karl (Gast)


Lesenswert?

Peter Xuang schrieb:
> Schweine-C
Ich wisste gar nicht, dass es C (ein Dialekt?) für Schweine gibt. Klingt 
interessant, hast du vielleicht ein paar Quellen dazu?

von Marcus W. (marcusaw)


Lesenswert?

karl schrieb:
> Peter Xuang schrieb:
>> Schweine-C
> Ich wisste gar nicht, dass es C (ein Dialekt?) für Schweine gibt. Klingt
> interessant, hast du vielleicht ein paar Quellen dazu?

http://de.wikipedia.org/wiki/Ook!

Kann man direkt mit [CTRL]+H in Oink! übersetzen. Ist aber kein C :)

: Bearbeitet durch User
von freitag (Gast)


Lesenswert?

Marcus W. schrieb:
> karl schrieb:
>> Peter Xuang schrieb:
>>> Schweine-C
>> Ich wisste gar nicht, dass es C (ein Dialekt?) für Schweine gibt. Klingt
>> interessant, hast du vielleicht ein paar Quellen dazu?
>
> http://de.wikipedia.org/wiki/Ook!

Merke: Schwein != OrangUtan

von Peter X. (peter_x)


Lesenswert?

karl schrieb:
> hast du vielleicht ein paar Quellen dazu?

[Mod: ein paar verbale Ausfälle gelöscht]

Das Problem ist doch folgendes: Ein Pointer ist ein Hinweisschild, wo 
man langfahren muß, will man in die Stadt fahren, auf die das Schild 
verweist.
Gibt es ein Schild in NRW, wo man langfahren muß, wenn man zum Sauffest 
nach München will, dann gibt man eben an, wo man langfahren muß, um 
erstes Schild wiederzufinden ist. Das ist ein Pointer auf einen Pointer. 
Ist man via "Pointer" auf jenen "Pointer" gestoßen, dann kann man sein 
gewonnenes Wissen wieder versaufen. So kommt es, dass Generationen immer 
wieder nach Pointern fragen...

Edit: Es ist nicht so, dass wenn auf einem Vorwegweiser "München" steht, 
man dann gleich auf der Wiesn ist. Ausserdem kann die ISIS diese 
Schilder auch verdrehen, dann landet man im schlimmsten Fall in Sacksen 
am Maschendrahtzaun.

: Bearbeitet durch Moderator
von Mike K. (mike_kr)


Lesenswert?

gut, weiter...wer kann sich nun den Quelltext sich anschauen und sagen, 
was wie gemacht wird?

von jonas biensack (Gast)


Lesenswert?

Ok, ich helf dir. Hab Zeit und brauch Kohle. Alles weitere per pn 
jonas.biensack(at)googlemail(punkt)com

gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.