Umwandlung von Delphi nach C++

polj

Grünschnabel
Hallo zusammen!
Hier im Forum habe ich eine passende für mich Lösung meines Problems gefunden. Dieser Baispiel ist in Delphi geschrieben.Ich habe probiert, dass in C++ benutzen, aber ich bekomme keine richtige Resultate.Könnte jemand das mal schauen wo ist meiner Fehler?
Code:
var
  i: Integer;
  b: String;
begin
  i := 20;
  while i > 0 do
  begin
    if (i mod 2) <> 0 then b := b + '1'
    else b := b + '0';
    i := i div 2;
  end;
end;
und meine Versuchungen:
Code:
	 char* str(b);

	while (j>0)  // j ist int
	{
	 if (j=(j%2)!=0)
		b=b+'1';
	 else
		 b=b+'0';
	 j=j/2;
	}
Danke euch voraus! :)
 
moin


Das müsste es eigentlich sein:
Code:
int i = 20;
string b;

while(i > 0)
{
    if(i % 2 && i != 0)
        b += '1';
    else
        b += '0';

    i /= 2;
}
Der binäre Code wird übrigens umgedreht dargestellt.


mfg
umbrasaxum
 
Danke für die schnelle Rückantwort!
Aber warum bekomme ich Fehler genau bei
"string b;"?
Deshalb habe ich char geschrieben Ich kann das nicht verstehen. Habt ihr Antwort?
 
moin


Da du keine Informationen über den von dir verwendeten Compiler gibst kann ich nur raten.
Du musst die string.h einbinden. Oder die string ohne .h und dann nach den Includes using namespace std; einfügen.


mfg
umbrasaxum
 
Hallo! Ich schreibe wieder. Es gibt Problem bei C++ mit String ?!
/Ich benutze Visual C++ für meinen Projekt./
Code:
// ioblink.cpp - Blinking LEDs sample
#include "stdafx.h"
#include "time.h"
#include "iowkit.h"
#include "string.h"
...................................................
..................................................
int main(int argc, char* argv[]); 
int main(int argc, char* argv[])
{
IOWKIT_HANDLE iows[IOWKIT_MAX_DEVICES];
	int i, j, fnum, relnum;
	ULONG bits;
	int numIows;
	IOWKIT_REPORT rep;
	WCHAR sn[9];
	BOOLEAN rc;
	DWORD pid;
	IOWKIT_HANDLE devHandle;
	string b;

   //eingefügt zum Lesen von argc und argv
    printf("argc ist %d\n", argc);

	if (argc>0)
	{
		for (i=0;i<=argc-1;i++)
		{
			printf("argv[%d] ist %s\n",i,argv[i]);
		}
	}

    if (argc==2) 
	{
                 fnum=atoi(argv[1]);
	 printf ("Fehlernummer ist %d\n",fnum);
	}
         for (fnum=1;fnum<128;fnum++)
	{ printf("i ist %d",i);
		if ((fnum % 2)!=0)
		{ 
                                 printf("fehlernummer ist %d",fnum);
		 printf("es gibt Rest=1,fehlernummer %d wird gesetzt\n",fnum);
		  b='Hi';
                                  b+='1';
                                 }
		else
		{
		   printf("Rest= 0, fehlernummer %d wird nicht gesetzt\n",fnum);
		   b='Hi';
                                   b+='0';
		}
        	fnum=fnum /2;
	printf("fehlernummer ist: %d\n", fnum);
	printf("b ist: %s\n", b);
    }
	printf("b ist gleich: %s\n", b);
	}
Folgendes bekomme ich als Fehlermeldung:
ioblink.cpp
D:\SDK\Samples\Simple IO\C\ioblink.cpp(48) : error C2065: 'string' : nichtdeklarierter Bezeichner
D:\SDK\Samples\Simple IO\C\ioblink.cpp(48) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'b'
D:\SDK\Samples\Simple IO\C\ioblink.cpp(48) : error C2065: 'b' : nichtdeklarierter Bezeichner
Fehler beim Ausführen von cl.exe.

Wenn ich printe meinen String was ich muss schreiben, ist %s richtig?!
 
moin


Du musst auch angeben welcher Version des VS du benutzt! Aber wie es aussieht benutz die VS 2003.

NImm statt string b;
std::string b;

Dann sollte das Problem behoben sein.


mfg
umbrasaxum
 
Wieder nichts.Ich weiss nicht, ob es mit string überhaupt möglig ist.?
Mein Programm ist Visual C++ 6.0
D:\SDK\Samples\Simple IO\C\ioblink.cpp(48) : error C2653: 'std' : Keine Klasse oder Namespace
D:\SDK\Samples\Simple IO\C\ioblink.cpp(48) : error C2065: 'string' : nichtdeklarierter Bezeichner
D:\SDK\Samples\Simple IO\C\ioblink.cpp(48) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'b'
D:\SDK\Samples\Simple IO\C\ioblink.cpp(48) : error C2065: 'b' : nichtdeklarierter Bezeichner
Fehler beim Ausführen von cl.exe.
 
Hy!

Wenn du mit dem Namespace arbeiten möchtest, musst du soweit ich weis satt "string.h" einfach nur <string> includieren.

mfg
uhu01
 
Hallo! Danke euch für die Hilfe!
Ich muss ein Programm für einen Kontroller überschreiben, deswegen habe ich ständig Fragen. Es geht um eine Fehlernummer (z.B. ab 1-128), die ich von char nach int ungewandelt habe. Aber die Funktionen für Schreiben auf einem Port dieses Geräts (Kontroller) sind so geschrieben, dass die Variablen DWORD Value(unsigned long) haben. Ich muss meine int-Fehlernummer nach (unsigned long) umwandeln?Ja? Ich habe keine genau solche Funktion gefunden. Weis jemand etwas darüber? wie kann ich das schaffen?
Danke im Voraus! :)
 
Zurück