Autor Beitrag
LuGo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mo 02.08.10 09:56 
Hallo zusammen,

ich habe mir überlegt von Delphi auf C(++/#) zu wechseln. Das Argument das Hobbyprogrammierer mit kleinem Geldbeutel nur mit max. Delphi 7 (aus dem Jahre 2002) programmieren können, das ausschlaggebende. Aber bevor ich mich dann überstrürzt an C(++/#) ranmache, bräuchte ich noch weitere Inforamtionen zu C(++/#) überhaupt. Ich habe nämlich überhaupt keine Ahnung. Schön wäre noch in so einem ProConta System und der vergleich zu Delphi

Und was nett wäre, wenn ihr diesen Code in C(++/#) übersetzen würdet. Soll ein einfacher Taschenrechner sein:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure Button1.Click (TObject);
var:Zahl1, Zahl2, Ergebnis: Integer;
begin
Zahl1:=StrToInt(Edit1.Text);
Zahl2:=StrToInt(Edit2.Text);
Ergebnis := Zahl1+Zahl2;
Label1.Caption := ('Ergebnis:' + Ergebnis')

end;

Und ich möchte euch bitten keine Diskussion, wie vor 14 Tagen (Delphi am Rande) vom Zaun zu brechen.

Danke

LuGo
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 02.08.10 10:09 
Hallo,

ich kann zwar kein Delphi, aber ich denke ich habe den Code verstanden.

In C# würde der Code dann wie folgt aussehen (das Event Click von Button1 muss dabei registriert sein, hier der EventHandler):

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
private void Button1_Click(object sender, EventArgs e)
{
   int zahl1 = int.Parse(Edit1.Text);
   int zahl2 = int.Parse(Edit2.Text);
   int ergebnis = zahl1 + zahl2;

   label1.Text += "Ergebnis: " + ergebnis.ToString();
}


Über die Argument pro und contra musst du dir selber klar werden. Wichtig finde ich immer, was man eigentlich damit machen will und wie die langfristigen Ziele aussehen. In der Windows-Entwicklung mit GUI ist für mich C# gesetzt.

Gruß
LuGo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mo 02.08.10 11:15 
Was braucht man eigentlich dazu, um mit c++ arbeiten zu können???
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 02.08.10 11:16 
Einen Editor und einen Kompiler.

Ist dir der Unterschied zwischen C++, Visual C++ und C# klar?

Wenn nicht mach dich bitte schlau und vermeide die Sprachen wie wild durcheinander zu werfen.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 02.08.10 15:12 
user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

ich kann zwar kein Delphi, aber ich denke ich habe den Code verstanden.

In C# würde der Code dann wie folgt aussehen (das Event Click von Button1 muss dabei registriert sein, hier der EventHandler):

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
private void Button1_Click(object sender, EventArgs e)
{
   int zahl1 = int.Parse(Edit1.Text);
   int zahl2 = int.Parse(Edit2.Text);
   int ergebnis = zahl1 + zahl2;

   label1.Text += "Ergebnis: " + ergebnis.ToString();
}



Das += sollte man noch zu einem = umformen oder? Sonst hat man nach den zweiten Klick dann spätestens sowas dastehen: Ergebnis: 5Ergebnis: 7. Und das is ja ned schön. Deswegen sollte man den text im Label nicht anfügen sondern ersetzen.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 02.08.10 16:21 
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
Das += sollte man noch zu einem = umformen oder? Sonst hat man nach den zweiten Klick dann spätestens sowas dastehen: Ergebnis: 5Ergebnis: 7. Und das is ja ned schön. Deswegen sollte man den text im Label nicht anfügen sondern ersetzen.

Das kommt darauf an. Wenn man nur das aktuelle Ergebnis haben will, hast du recht; dann gehört ein einfaches Gleichheitszeichen hin. Wenn man auch die vorherigen Ergebnisse anzeigen will, ist += korrekt, und dann am besten zusammen mit Environment.NewLine.

Jürgen
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mo 02.08.10 18:55 
Dein Programm hat keine eindeutige C++ Übersetzung. Es gibt eben mehrere Möglichkeiten, GUIs zu erstellen. Als Konsolenanwendung würde das ungefähr so aussehen:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
#include <iostream>
#include <cstdlib>
/* C-Header stdlib.h -> cstdlib in C++
 * brachen wir für atoi(), itoa()
 * EDIT: nein, itoa() ist nicht ISO-Standard;
 * siehe unten für K&R-Implementierung
 */


int do_add(char *, char *); // Funktionsprototyp
/* Hinweis:
 * In der C++ Standard Library findet sich auch eine bessere String-Klasse.
 * wird aber nicht so häufig verwendet. Außerdem würde der die Lösung nur 
 * verkomplizieren.
 */


int do_add(char *arg1, char *arg2)
{
    int zahl1, zahl2, ergebnis;

    zahl1 = atoi(arg1);
    zahl2 = atoi(arg2);
    ergebnis = zahl1 + zahl2;

    return ergebnis; // Sobald du return "aufrufst", ist Sense
}

int main()
{
    char zahl1[10], zahl2[10];

    std::cout << "Geben Sie zwei Zahlen durch Lehrzeichen getrennt ein: ";
    std::cin  >> zahl1 >> zahl2;
    std::cout << "  = " << do_add(zahl1, zahl2)
        << std::endl;

    return 0;
}


Compiler: MS Visual C++ Express, MinGW, Cygwin (Linux Kompatibilitätsschicht), Intel C++
IDE: MS Visual C++ Express, Code::Blocks, Eclipse mit Plugin

Wenn du was kostenloses suchst: Code::Blocks mit beliebigem Compiler, dazu das wxWidgets-Plugin -> GUI Designer

Buch: C++ Objektorientiertes Programmieren von Anfang an, Helmut Erlenkötter, rororo, 10.95 €

Jedenfalls: C++ ist nicht so viel schwerer als C# (zumindest der Teil von C++, den du täglich brauchst). Hauptnachteil ist aber, dass für grafische Oberflächen keine so schöne Lösung wie in Delphi oder C# existiert.


Zuletzt bearbeitet von Jakob_Ullmann am Do 05.08.10 10:55, insgesamt 2-mal bearbeitet
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 02.08.10 19:01 
Für C++ kann ich auch das hier empfehlen.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
BeitragVerfasst: Mo 02.08.10 20:47 
Hallo,

Jakob_Ullmann hat folgendes geschrieben:
Hauptnachteil ist aber, dass für grafische Oberflächen keine so schöne Lösung wie in Delphi oder C# existiert.


Wie meinst Du das? Unter C++ Builder und VS 2010 C++ geht es eigentlich genauso wie unter Delphi.

Bis bald Chemiker
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 02.08.10 22:01 
Ich habe am Wochenende gerade mit C++ gearbeitet, da ich einige Modifikationen an UltraVNC vorgenommen habe. Alleine die Kompilierzeit jedesmal...
Visuelle Oberflächen sind so eine Sache, da kann man ziemlich viele Varianten nutzen, jeweils mit Vor- und Nachteilen.

Keine davon kommt aber so richtig an Delphi oder C# heran. Wenn die Wahl besteht, würde ich jederzeit zu C# tendieren. Da hat man dank des .NET Frameworks sehr sehr viele Grundlagen, die man in C++ mühsam basteln oder als Quelltext finden müsste.

Nur wegen anderen Plattformen wie Linux würde ich C++ nehmen.

Ich selbst benutze Visual Studio 2008 Professional, die Express Editions davon sind schön und kostenlos.
CSMN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: Di 03.08.10 11:06 
du kannst auch mit c# für linux und mac programme schreiben - siehe mono.net
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Di 03.08.10 19:57 
Also zu der Übersetzung des Taschenrechners in C++. Ich habe mal schnell mit Anjuta + Glade + GTK+ (in C) einen Mini-Addierer geschrieben. Ich hänge den jetzt mal nicht an, es geht ja nur darum, einen Eindruck von der Sprache zu vermitteln. Ist natürlich C und nicht C++, weil Anjuta nur für C Methoden-Stubs generieren kann, aber so stark unterscheiden sich jetzt C und C++ auch wieder nicht. atoi() und reverse() sind schnell die in Wikipedia abgeschriebene Kerningham&Ritchie-Implementierungen kopiert, weil ich keine Lust hatte, das jetzt zu schreiben. Ansonsten aber eigentlich brauchbar.

Header callbacks.h
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
#include <gtk/gtk.h>

extern GtkWidget *zahl1, *zahl2, *ausgabe;

void destroy (GtkWidget *widget, gpointer data);


Source callbacks.c
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "callbacks.h"

/****
 * kopiert von Wikipedia auf die Schnelle ;-)
 */


void itoa(int n, char s[])
{
    int i, sign;
 
    if ((sign = n) < 0)  /* record sign */
        n = -n;          /* make n positive */
    i = 0;
    do
    {   /* generate digits in reverse order */
        s[i++] = n % 10 + '0';   /* get next digit */
        /* Kommentar von mir: in C darfst du ohne weiteres int's und char's addieren;
         * vieles, was in C geht, musst du in C++ aber casten
         */

    } while ((n /= 10) > 0);     /* delete it */
    if (sign < 0)
        s[i++] = '-';
    s[i] = '\0';
    reverse(s);
}

/* reverse:  reverse string s in place */
void reverse(char s[])
{
    int i, j;
    char c;
    
    /* Kommentar von mir:
     * spürst du die Energie hinter der for-Schleife? ;-)
     * -> i++, j-- 
     */

    for (i = 0, j = strlen(s)-1; i<j; i++, j--)
    {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}
/* ende kopie */

void
add_up (int n1, int n2)
{
    char s[20];
    /* itoa = IntToStr, atoi = StrToInt */
    itoa(n1 + n2, s);  /* hier: Übergabe s bereits Pointer: s <=> &(s[0]) */
    gtk_label_set_text (GTK_LABEL(ausgabe), (gchar*)s);
}

void
destroy (GtkWidget *widget, gpointer data)
{
    gtk_main_quit ();
}

void
on_button1_clicked (GtkButton *self, gpointer user_data)
{
    int a1, a2;
    /* (char*)... ist ein Cast; gtk_entry... gibt nämlich nicht char*, sondern
     * gchar* zurück (glib). GTK_ENTRY ist ein Makro, das das Casten übernimmt,
     * in dem Fall GtkWidget -> GtkEntry (Entry <=> TEdit)
     */

    a1 = atoi((char*)gtk_entry_get_text (GTK_ENTRY(zahl1)) );
    a2 = atoi((char*)gtk_entry_get_text (GTK_ENTRY(zahl2)) );
    /* Bedenke, dass C im Gegensatz zu C++ keine Klassen unterstützt.
     * also mit gtkmm würde das schon ein wenig anders aussehen.
     */

    add_up(a1, a2);
}


Source main.c
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

#include <config.h>

#include <gtk/gtk.h>



/*
 * Standard gettext macros.
 */

#ifdef ENABLE_NLS
#  include <libintl.h>
#  undef _
#  define _(String) dgettext (PACKAGE, String)
#  ifdef gettext_noop
#    define N_(String) gettext_noop (String)
#  else
#    define N_(String) (String)
#  endif
#else
#  define textdomain(String) (String)
#  define gettext(String) (String)
#  define dgettext(Domain,Message) (Message)
#  define dcgettext(Domain,Message,Type) (Message)
#  define bindtextdomain(Domain,Directory) (Domain)
#  define _(String) (String)
#  define N_(String) (String)
#endif



#include "callbacks.h"

/* For testing propose use the local (not installed) ui file */
/* #define UI_FILE PACKAGE_DATA_DIR"/gtk_taschenrechner/ui/gtk_taschenrechner.ui" */
#define UI_FILE "src/gtk_taschenrechner.ui"

GtkWidget *zahl1, *zahl2, *ausgabe;

GtkWidget*
create_window (void)
{
  GtkWidget *window;
  GtkBuilder *builder;
  GError* error = NULL;

  builder = gtk_builder_new ();
  if (!gtk_builder_add_from_file (builder, UI_FILE, &error))
  {
    g_warning ("Couldn't load builder file: %s", error->message);
    g_error_free (error);
  }

  /* This is important */
  gtk_builder_connect_signals (builder, NULL);
  window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
  
  zahl1 = GTK_WIDGET (gtk_builder_get_object (builder, "entry1"));
  zahl2 = GTK_WIDGET (gtk_builder_get_object (builder, "entry2"));
  ausgabe = GTK_WIDGET (gtk_builder_get_object (builder, "label2"));

  g_object_unref (builder);
  
  return window;
}


int
main (int argc, char *argv[])
{
   GtkWidget *window;


#ifdef ENABLE_NLS
  bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
  textdomain (GETTEXT_PACKAGE);
#endif

  
  gtk_set_locale ();
  gtk_init (&argc, &argv);

  window = create_window ();
  gtk_widget_show (window);

  gtk_main ();
  return 0;
}


gtk_taschenrechner.ui ist sowas wie eine DFM in Delphi, bloß eben von Glade generiert. Habe ich jetzt nicht hier, also nicht wundern.

ÜBRIGENS: Angeblich soll es Glade auch für Windows geben (logisch, GTK+ gibt es ja auch für Windows). Hab's aber nicht ausprobiert.

Zu den Sourcen: die Klammern sind hier etwas verrutscht, sorry.


Zuletzt bearbeitet von Jakob_Ullmann am Do 05.08.10 10:27, insgesamt 4-mal bearbeitet
guinnes
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Mi 04.08.10 09:13 
Ob ich nach der Enthüllung noch C++ machen möchte.....
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mi 04.08.10 16:47 
:rofl:

Als nächstes sollten wir vor dem Internet warnen! :twisted:

EDIT: pro-contra für C++:

Contra:
- du kannst mit C++ ziemlich viel Unsinn anstellen (Pointer, Makros, Casts), da du mehr Freiheiten hast
- manchmal eine "read-only"-Sprache. Z. B. kommen Pointern eine größere Rolle zu. Es gibt kein ISO-Pendant zu dynamischen Arrays. Entweder macht man das als verkettete Liste oder mit der STL std::vector-Klasse. Letzteres macht es auch automatisch, ohne dass du dich um Speicherverwaltung kümmern musst, ist aber nicht so "magisch" wie in Delphi.
- GUI-Design nicht so einfach wie in Delphi. Für GTK+ und wxWidgets gibt es aber brauchbare Lösungen, die dir die Arbeit wenigstens vereinfachen.


Pro:
- du bist nicht an eine bestimmte Firma und deren Launen sowie deren Marketing-Inkompetenz gebunden. Es gibt bei C++ kein wirkliches Monopol. Allerdings halten sich nicht alle Compiler an den ISO-Standard. Vorbildlich, aber dennoch nicht 100% kompatibel, ist da GCC, Microsoft nimmt es mit Standards wie so oft nicht so genau (z. B. sind nicht alle vergeschriebenen Funktionen aus der math.h / cmath implementiert).
- du hast mehr Freiheiten
- du kriegst gute Tools kostenlos und frei
- du hast die Möglichkeit, mit etwas Aufwand plattformunabhänhige Programme zu schreiben.
- du hast Sprachfeatures wie den Operator +=, ?:, generische Templates, die Möglichkeit, Operatoren zu überladen (hast du in neueren Delphi-Versionen, aber ist glaube ich kein ISO-Standard [-> Pro#1], und eben nicht in D7).


Auf jeden Fall ist C++ Geschmackssache.

Bei C# sehe ich lediglich die Nachteile, dass du keine Pointer hast, und, dass du an MS gebunden bist (abgesehen von Mono, was aber imho noch nicht für den professionellen Einsatz reif ist). Auf der anderen Seite nimmt es dir aber auch jede Menge Arbeit ab.
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
BeitragVerfasst: Mi 04.08.10 23:58 
Hallo,

vielleicht als weitere Entscheidungshilfe. Einfach mal nachsehen mit welcher Programmiersprache MS Office 2010 geschrieben worden ist.

Bis bald Chemiker
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Do 05.08.10 11:06 
Hab Chemikers Beitrag gar nicht gemerkt.

user profile iconChemiker hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

Jakob_Ullmann hat folgendes geschrieben:
Hauptnachteil ist aber, dass für grafische Oberflächen keine so schöne Lösung wie in Delphi oder C# existiert.


Wie meinst Du das? Unter C++ Builder und VS 2010 C++ geht es eigentlich genauso wie unter Delphi.

Bis bald Chemiker


Sicher, aber ihm ging es ja um den Preis. Und C++ Builder ist ja genauso teuer wie Delphi. Und Visual Studio ist auch nicht gerade billig. Es gibt zwar eine kostenlose Express-Version, allerdings hast du mit VC++ Express die Microsoft Foundation Classes (MFC) nicht. Du kannst also lediglich C++ für .NET oder die Win32-API nutzen, wenn du eine GUI haben willst. Das halte ich aber für (C++ .NET) nicht sinnvoll bzw. (Win32-API) viel zu kompliziert. Man kann also nur andere Frameworks wie Qt, GTK+ (bzw. gtkmm), wxWidgets "von Hand" bedienen oder eben dazu noch andere Designer nutzen (Glade für GTK+, Code::Blocks wxWidgets Plugin, Nokia's QtDesigner), was sich dann aber etwas komplizierter gestaltet.

Unter GNU/Linux hast du die Möglichkeit, Anjuta mit integriertem Glade (und DevHelp Plugin) zu nutzen. Für Windows hast du diese IDE nicht. Das geht zwar dann auch ganz gut, aber es ist halt nicht integriert und du hast dann immer noch die Aufgabe, dich um Sachen wie das Verknüpfen von Callback-Funktionen zu kümmern. Dafür sind solche Lösungen kostenlos, leistungsfähig und plattformunabhängig.

PS: glade.gnome.org/ . Also ja, gibt es auch für Windows.
EDIT: Habe gerade gelesen, dass es für GNOME und Anjuta die Möglichkeit gibt, das mit Cygwin zu nutzen.


Zuletzt bearbeitet von Jakob_Ullmann am Do 05.08.10 11:31, insgesamt 2-mal bearbeitet
12profi
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 170

Win 7
C# (VS 2010, #Develop)
BeitragVerfasst: Do 05.08.10 11:07 
Zitat:
Und was nett wäre, wenn ihr diesen Code in C(++/#) übersetzen würdet. Soll ein einfacher Taschenrechner sein:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Button1.Click (TObject);
var:Zahl1, Zahl2, Ergebnis: Integer;
begin
Zahl1:=StrToInt(Edit1.Text);
Zahl2:=StrToInt(Edit2.Text);
Ergebnis := Zahl1+Zahl2;
Label1.Caption := ('Ergebnis:' + Ergebnis')


also ich würde es so machen

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
double zahl1;
double zahl2;
double ergebnis;
zahl1=convert.ToDouble(Textbox1.Text)
zahl2=convert.ToDouble(Textbox2.Text)
if(TextBox3.Text=="+")
{
ergebnis=zahl1+zahl2;
label1.Text=ergebnis.ToStrin();
}


und mit /*-auch dafür gibt es aber auch switch und case

z.b. Tutorial www.youtube.com/watch?v=Akz60H0NlJQ

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 05.08.10 12:56 
Wie wärs mit Java? Sehr schöne, objektorientierte Sprache. Platform-unabhängig und weit verbreitet. Außerdem gibt es schöne kostenlose IDEs (Eclipse und NetBeans).

+ Garbage Collection
+ Platform Unabhängigkeit
+ "von Grund auf" Objektorientiert
+ Viele Bibliotheken
+ Weit verbreitet

- Java Runtime Environment vorausgesetzt

Dass Java langsam ist, ist übrigens so auch nicht (mehr) richtig. Durch dynamische Optimierung holt die JVM noch einiges an Performance raus.

Siehe auch: de.wikipedia.org/wik...konzepte_der_Sprache

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
 public class HalloWelt {
     public static void main(String[] args) {
         System.out.println("Hallo Welt!");
     }
 }


und: de.wikipedia.org/wiki/Java-Syntax

Dein Code (so oder so ähnlich) in Java:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
public void buttonClick(Object o) {
  int zahl1, zahl2;
  zahl1 = Integer.valueOf(edit1.getText());
  zahl2 = Integer.valueOf(edit2.getText());
  int ergebnis = zahl1 + zahl2;
  label1.setText("Ergebnis:" + ergebnis);
}
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Do 05.08.10 13:22 
Hallo,

ich würde vorschlagen, probiere es einfach aus. Denke dir ein kleines Projekt aus, z. B. ein kleiner Taschenrechner mit den vier Grundrechenarten (in Anlehnung an dein Eröffnungspost), lade dir für jede der Sprachen, die dich interessieren Kostenlose Werkzeuge herunter und Implementiere es in jeder der Sprachen. Ich denke so wirst du an ehesten feststellen können welche der Sprachen dir am Besten gefällt. Denn Diskussionen welche Sprache die besser ist führen zu nichts. Es ist schlicht Geschmackssache also probiere selbst und frage nicht dritte wie es schmeckt ;).

Mögliche Tools für Windows:

C++


C#


Andere User werden dir sicher noch andere Empfehlen können. Wenn du auch Java in Erwägung ziehen willst darf natürlich auch Eclipse nicht ungenannt bleiben.

critter

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Do 05.08.10 14:32 
Das stimmt, Java ist wirklich eine sehr schöne Sprache.

Als IDE kann ich auch Eclipse empfehlen. NetBeans ist sicherlich Geschmackssache (besonders wegen seiner guten Unterstützung für GUIs), aber für Anfänger IMHO ungeeignet (setzt viel voraus, während du bei Eclipse direkt mit Tutorials überflutet wirst).

Tutorials (englisch): download.oracle.com/...rial/java/index.html

PS: nochmal zu Glade: OK, ist halt schon ziemlich mächtig. Man muss halt umdenken, wenn man damit arbeiten will. Du kannst Elemente nicht absolut positionieren, sondern nur durch Boxen eine Einteilung vornehmen. Das heißt, dass du die Oberfläche im Voraus mit Bleistift und Papier planen musst, was aber manchen Anwendungen auch sonst gut täte.