Kleine frage: Delphi -> C++Builder
-
Delphi:
var i: Word; Info: TXyz;
ist in C++:
Word i; TXyz *Info;
korrekt? dann habe ich noch eine zeile von delphi ins C++ übernommen. diese schaut nun so aus:
Info = Blah(List->Items[i])^;
das problem scheint wohl ^ zu sein. muss wohl aber sein, da es nicht funktioniert wie es soll. der compiler meldet mir also "Ausdruckssyntax". was tun?
-
hmm das "Dach" erinnert mich an die Zeiger bei Pascal/Delphi, ich weis ja nicht genau, was dein Blah ist, aber in C greift man auf den Inhalt eines Zeigers nicht mit dem "Dach" zu.
Lass es einfach mal weg oder schick etwas mehr Code
Beechen
-
naja hier ist der delphi code. wie würdest du den nun korrekt in C++ umschreiben? ich habs ja soweit hinbekommen bis auf ^
var i: Word; UserInfo: TUINEntry; begin if SrvContactList.Count > 0 then for i := 0 to SrvContactList.Count - 1 do begin UserInfo := PUINEntry(SrvContactList.Items[i])^; end; ICQClient1.DestroyUINList(SrvContactList); end;
-
habe den code so übersetzt.
Word i; TUINEntry *UserInfo; if(SrvContactList->Count > 0) { for(i = 0; to SrvContactList->Count-1 do) { UserInfo = PUINEntry(SrvContactList->Items[i])^; } ICQClient1->DestroyUINList(SrvContactList); }
bei der zeile "for(i = 0; to SrvContactList->Count-1 do)" bin ich ned sicher ob "to" einfach gekillt werden kann und wo das "do" am ende steht eine inkrementation hin muss? also "i++". die zeile würde dann wie folgt aussehen:
for(i = 0; SrvContactList->Count-1; i++)
-
Hmmm, kenn von Delphi nur ganz wenig. Andere Syntax, aber im Kern bis auf einige Besonderkeiten gleich.
for braucht in beiden Sprachen 3 Ausdrücke: (Basis;Ziel;lauf dort hin).
for(i = 0; to SrvContactList->Count-1 do) meint,
for(i = 0; < SrvContactList->Count-1; i++)
Jetzt wird die Liste von Anfang bis Ende durchgearbeitet.
Das '^' kenn ich nicht. Aber wofür gibt's denn die BCB-Hilfe? :p
^ Bitweises exklusives ODER; vergleicht paarweise je zwei korrespondierende Bits und setzt das entsprechende Bit im Ergebnis auf 1, wenn beide Bits unterschiedlich sind, andernfalls auf 0.
Also soll wohl beim Durcharbeiten nach einem bestimmten Eintrag gesucht werden. Die untere Zeile könnte die Liste benennen, die obere sucht nach einem bestimmten Eintrag. Ist jetzt aber wilde Interpretation. Übersetzen kann ich das nicht, ich müßte probieren. Nur deswegen die Überlegung, um vielleicht eine Chance zu haben. Der komplette Code wird sicher weitere Anhaltspunkte liefern.
HTH
-
was für ein quark laberst du denn da?
(Basis;Ziel;lauf dort hin)
hää? sind wir hier bei der army?? das heisst immer noch (init;bedingung;weiter)
for(i = 0; < SrvContactList->Count-1; i++)
was das denn für ein scheiss? wieso wendest du an einer stelle wo es garnicht möglich ist, einen "kleiner als" operator an??? compilier diese for-schleife mal, bin gespannt ob du einen compiler findest der das hinkriegt!
Jetzt wird die Liste von Anfang bis Ende durchgearbeitet.
geh pennen!
-
Original erstellt von <guru>:
**for(i = 0; < SrvContactList->Count-1; i++)was das denn für ein scheiss? wieso wendest du an einer stelle wo es garnicht möglich ist, einen "kleiner als" operator an??? compilier diese for-schleife mal, bin gespannt ob du einen compiler findest der das hinkriegt!
Jetzt wird die Liste von Anfang bis Ende durchgearbeitet.
geh pennen!**
Hör auf, hier andere Leute zu beleidigen! Außerdem ist an der Stelle wohl ein "kleiner als"-Operator möglich. Soll doch eine Bedingung sein! Er meinte natürlich "i < SrvContactList->Count-1". Du solltest dich eher mal schlafen legen!
@Omega: In einem hat er recht: du laberst wirklich Quark!
@<kleiner>: Nimm die for-Schleife, die du ganz unten in deinem Beitrag hast. Ich denke, die Zeile mit dem ^ muss wie folgt lauten:
UserInfo = *PUINEntry(SrvContactList->Items[i]);
-
Du bist der Guru??? Was ein Glück, daß ich nicht gläubig bin.
Denn von so einem "Guru" könnte man nur hirnlose Sprüche erfahren, niemals was von Wert. Besser machen statt leere Hohlkopfkritik wär ja wohl das Mindeste, wenn man so dick auftrumpft.
Und noch'n Gedicht: Wenn du dich angeblich so toll auskennst, warum schweigst du zu dem '^'???
Kann also nicht so viel dran sein!!!...
Wie groß ist SrvContactList->Count?
Na? Sag schon! Liegt ja wohl zwischen 0 und -1? *lach*. Kann das sein, daß -1 das Listenende definiert?
Ole, ich geh pennen. Aber vorher gönn ich mir noch einen herzhaften
...
<edit>...und Morgen überleg ich mir, warum ich ausgerechnet jetzt an "in der Pfeife rauchen" denken muß. Army? Von mir aus auch Army :p </edit>
-
Hast Recht, @WebFritzi. Quark gelabert, und dabei das "i" vergessen. Kann aber auch an der Taststur liegen - das Quark labern.
:p
@guru... ach was, geh pennen, ist ja doch zwecklos...
-
die -1 kann man weglassen, wenn das <-zeichen benutzt in c. in pascal (delphi) gibs sowas in der for-schleife nicht!
// pascal for i := 0 to SrvContactList.Count - 1 do
// c for (int i = 0; i < SrvContactList->Count; i++)
wenn du schon ne delphi-unit hast, brauchste die doch nicht erst in c++ übersetzen, kannste doch auch gleich einbinden!
-
WebFritzi: Danke für deinen vorschlag mit "UserInfo = *PUINEntry(SrvContactList->Items[i]);". das hat leider nicht geklappt. habe dann "*" weggelassen und dann den schleifen rumpf von sunday genommen, et vola
funktioniert prima.
-
Hi,
TUINEntry ist eine Class, Record oder andere Type ???
TUINEntry UserInfo; //nicht Class if (SrvcontactList->Count > 0) for (int i = 0; i < SrvContactList->Count; i++) UserInfo = *(PUINEntry)SrvContacList->Items[i]; ICQClient1->DestroyUINList(SrvContactList);