AGB  ·  Datenschutz  ·  Impressum  







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

C For Schleife nach Delphi

Ein Thema von stoxx · begonnen am 13. Dez 2005 · letzter Beitrag vom 14. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

C For Schleife nach Delphi

  Alt 13. Dez 2005, 22:32
ich bin gerade dabei, einen C Quelltext nach Delphi zu portieren, und bin auf sowas gestoßen !
was tut das teil ?

Delphi-Quellcode:
 for(*edge_pos=1, *chars_found=1; *edge_pos<length; (*chars_found)++,(*edge_pos)++)
      {
      }

dann habe ich noch einen Teil:

*chars_found = 0;
und
(*chars_found) = length;


vermute ich da richtig, dass die Klammern in dem Fall überflüssig sind, oder wird da komplett was anderes getan ?

Wäre schön, wenn mir jemand helfen könnte !
Danke !
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: C For Schleife nach Delphi

  Alt 13. Dez 2005, 22:35
Zitat von stoxx:
Code:
 for(*edge_pos=1, *chars_found=1; *edge_pos<length; (*chars_found)++,(*edge_pos)++)
      {
      }
Ich kenn mich mit C nich aus, die Schleife sieht aber nicht so schwer zu verstehen aus.
Für die For-Schleife werden zwei Variablen (edge_pos, chars_found) mti 1 initialisiert. Dann läuft die Schleife, solange edge_pos kleiner als length ist und die beiden Variablen werden pro Durchgang um 1 erhöht.

//Edit:
Sorry, hab da wohl was übersehen: Es werden keine Variablen initialisiert, sondern Zeiger. (Das deutet der * ja an.)
Zu deiner zweiten Frage kann ich eigentlich nur mutmaßen, da ich mich wie gesagt überhaupt nicht auskenne, aber ich denke mal, daß die Klammer wahrscheinlich wirklich unnötg ist.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#3

Re: C For Schleife nach Delphi

  Alt 13. Dez 2005, 23:00
Zitat von leddl:
Sorry, hab da wohl was übersehen: Es werden keine Variablen initialisiert, sondern Zeiger. (Das deutet der * ja an.)
Zeiger sind doch auch Variablen
Die Zeiger scheinen lediglich ein Workaround für By-Reference-Übergaben zu sein.
for-Schleifen in C sind mächtiger als in Delphi, man kann sie nicht immer in Delphi in einer for-Schleife abbilden.
In diesem Fall ist eine while-Schleife mit vorheriger Initialisierung nötig:
Delphi-Quellcode:
edge_pos^ = 1;
chars_found^ = 1;

while (edge_pos^ < length) do
begin
  chars_found^ := chars_found^ + 1;
  edge_pos^ := edge_pos^ + 1;
end;
edge_pos und chars_found sind wahrscheinlich Pointer auf Integer (int *).
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#4

Re: C For Schleife nach Delphi

  Alt 13. Dez 2005, 23:03
Zitat von tommie-lie:
Zeiger sind doch auch Variablen
Aber spezielle, daher wollte ich das nochmal gesagt haben
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: C For Schleife nach Delphi

  Alt 13. Dez 2005, 23:07
okay .. vielen Dank !
das ist mein erster C Quelltext, denn ich nach Delphi portiere, also man möge mir nachsehen

Ich hab nur immer etwas Angst, dass man mit einem C Ausdruck mehr anstellt, als man eigentlich vorhatte ....

Zitat:
edge_pos und chars_found sind wahrscheinlich Pointer auf Integer (int *).

ja, da ist richtig, in meinem Fall aber uninteressant, da das nur Funktionsübergaben by Reference sind ..
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#6

Re: C For Schleife nach Delphi

  Alt 14. Dez 2005, 15:07
Zitat von stoxx:
ja, da ist richtig, in meinem Fall aber uninteressant, da das nur Funktionsübergaben by Reference sind ..
Jupp, wenn du's in Delphi aber nicht über Pointer machst (sondern mit Parametern by Reference) musst du latürnich die Dereferenzierungsoperatoren aus meinem Quellcode rausnehmen
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: C For Schleife nach Delphi

  Alt 14. Dez 2005, 15:17
Zitat:
for-Schleifen in C sind mächtiger als in Delphi
In welchem Kontext ?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#8

Re: C For Schleife nach Delphi

  Alt 14. Dez 2005, 15:49
Zitat von sniper_w:
Zitat:
for-Schleifen in C sind mächtiger als in Delphi
In welchem Kontext ?
Beispielsweise in diesem. Man kann in C mit einer for-Schleife mehr anfangen als in Delphi. Zum Beispiel eine Abbruchbedingung auf mehr als eine Variable, beliebige Befehle bei jedem Schleifendurchlauf. In Delphi bist du auf eine Zählvariable beschränkt, die auch nicht mehr macht, als der Name verspricht: Sie wird hoch- oder runtergezählt.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: C For Schleife nach Delphi

  Alt 14. Dez 2005, 15:54
Wenn du mit "mächtiger"meinst, dass es leichter sei, etwas zu beschreiben, dann ja. Sonst ist es ganz egal, und IMHO ( bin nicht sicher ) sind Delphi schleifen schneller, denn loop variable ist in einem Register gelegt, was nicht der Fall in C ist.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#10

Re: C For Schleife nach Delphi

  Alt 14. Dez 2005, 16:02
Zitat von sniper_w:
Wenn du mit "mächtiger"meinst, dass es leichter sei, etwas zu beschreiben, dann ja.
Ich meine, was ich sage. Mit mächtiger ist gemeint, daß eine for-Schleife in C mehr kann als eine for-Schleife in Delphi. Nicht mehr und nicht weniger. Daß es scheißegal ist, weil ich die Funktionalität einer for-Schleife in C *immer* mit einer while-Schleife in Delphi nachbauen kann, wenn man es mit einer for-Schleife nicht hinkriegt, ist eine andere Sache. Hier wäre auch eine for-Schleife in Delphi möglich gewesen, IMHO ist aber eine while-Schleife in diesem Fall sinnvoller.

Zitat von sniper_w:
Sonst ist es ganz egal, und IMHO ( bin nicht sicher ) sind Delphi schleifen schneller, denn loop variable ist in einem Register gelegt, was nicht der Fall in C ist.
Ein vernünftiger C-Compiler mit aktivierter Optimierung wird bei for (int i = 0; i < 10; i++) die Variable i sicherlich auch in ein Register stecken, wenn er die Register nicht anderweitig benötigt. Da eine for-Schleife in C vollkommen andere Möglichkeiten bietet, wirst du aber sicherlich auch ein Beispiel finden, wo keine einzige Variable in ein Register wandert. for (; somefunction(); ) wäre ein solches Beispiel, hier gips nix, was in ein Register könnte.
  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 13:25 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