C# to Delphi

Résolu
Pet73 Messages postés 3 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 17 novembre 2009 - 17 nov. 2009 à 12:39
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 18 nov. 2009 à 01:32
Hi for All,
I have the following C# code my aim is to convert it to Delphi :

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <ctype.h>
#include <string.h>
#include <errno.h>
#include <sys/param.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <netdb.h>

#include

#define BUFSIZE 216 /* size of message buffer */

void usage(char *progname)
{
printf("usage: %s [-h host] [-p port]\n", progname);
exit(EXIT_FAILURE);
}

int main(int argc, char *argv[])
{
char *host = "localhost";
int port = 6661;
int fd;
struct hostent *hostentry = NULL;
struct sockaddr_in addr;
int n;
int c, errflg = 0;
char buffer[BUFSIZE];
char header[7];
char ibuffer[256];
FILE *f = freopen("/home/cmstest/iofiles/massive/pending/T","w",stderr);

memset(ibuffer, 0, 256);
memset ( header, 0, sizeof ( header ));
header[0] = ((strlen(argv[5])+4)/256);
header[1] = ((strlen(argv[5])+4)%256);
memcpy ( header + 2 , "1234", 4);
memcpy ( ibuffer ,header , 6);
memcpy ( ibuffer + 6 ,argv[5] ,strlen(argv[5]));
while ((c=getopt(argc, argv, "h:p:")) != -1) {
switch(c) {
case 'h': /* server host name */
host = optarg;
break;
case 'p': /* server port */
port = atoi(optarg);
break;
default: /* the rest are errors */
errflg++;
break;
}
}

if (host NULL || port 0 || errflg) {
usage(argv[0]);
}

signal(SIGPIPE, SIG_IGN);

/* create a TCP socket */
if ((fd=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
printf("sock00:socket error %d\n", errno);
exit(EXIT_FAILURE);
}


/* connect to the socket server */
memset(&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);

if (strcmp(host, "any") == 0) {
addr.sin_addr.s_addr = htonl(INADDR_ANY);
} else if (strcmp(host, "loopback") == 0) {
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
} else {
if ((hostentry gethostbyname(host)) NULL) {
printf("sock00:invalid hostname "%s"\n", host);
exit(EXIT_FAILURE);
}
memcpy(&addr.sin_addr.s_addr, hostentry->h_addr, hostentry->h_length);
}



if (connect(fd, (struct sockaddr *)&addr,
sizeof(struct sockaddr)) < 0) {
printf("sock00:connect error %d\n", errno);
exit(EXIT_FAILURE);
}

if (send(fd, ibuffer, sizeof(ibuffer), 0) <= 0) {
printf("sock00:send error %d\n", errno);
exit(EXIT_FAILURE);
}

memset(buffer, 0, sizeof(buffer));
/* fprintf(stderr,"\nCMD :%s\n",ibuffer+6); */
if ((n = recv(fd, buffer, sizeof(buffer), MSG_WAITALL)) < 0) {
printf("recv error %d\n", errno);
exit(EXIT_FAILURE);
}
/* printf("%s\n",buffer+6 ) ;*/
fprintf(stderr,"%s\n",buffer+10);
close(fd);

return EXIT_SUCCESS;
}

Any help would be appreciated
Thanks

10 réponses

zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016
17 nov. 2009 à 16:08
Si je ne me trompe, en Delphi, on n'a pas besoin de s'embêter avec la taille des objets que l'on manipule, il suffit de les créer et de les détruire au bon moment.

Sinon, tu le transcrit en langage assembleur, et tu pourras l'intégrer dans un programme Delphi.

Kind regards
3
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
17 nov. 2009 à 13:27
On ne demande pas de code tout fait.
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
17 nov. 2009 à 14:02
il va pas comprendre julio !
"We don't dimennde ze code all fact"
pas de moquerie, c'est une blague. J'suis pas autant une buse que ca en anglais
0
Pet73 Messages postés 3 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 17 novembre 2009
17 nov. 2009 à 14:42
Thank you Julio for your quick answer, Ok I see
just memset and memcpy and this statement :

header[0] = ((strlen(argv[5])+4)/256);
header[1] = ((strlen(argv[5])+4)%256);

Cheers
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
17 nov. 2009 à 14:50
header[0] = ((Length(argv[5])+4) div 256);
header[1] = ((Length(argv[5])+4) mod 256);
0
Pet73 Messages postés 3 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 17 novembre 2009
17 nov. 2009 à 17:02
Many Thanks for your Help
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
17 nov. 2009 à 22:27
Si tu sais parler en français, car il "semblerait" que tu comprennes les réponses, tu peux le faire, c'est pas interdit sur un forum français

Cordialement, Bacterius !
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
18 nov. 2009 à 01:14
Une question en français ???!!!

Ca existe, ici ?
0
Aly05 Messages postés 8 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 30 mars 2010
18 nov. 2009 à 01:19
Hello Pet73,

Your code is in C++, not in C#..
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
18 nov. 2009 à 01:32
@ Aly05
On s'en fout.
Venu acheter du Delphi, il repart avec de l'assembleur... Et il est content !
0
Rejoignez-nous