Forum: PC-Programmierung Visual Studio 2010 Einstellungen


von Patrick B. (p51d)


Lesenswert?

Hallo miteinander

Ich habe mir heute eine neue Version von Visual C++ Express Edition 2008 
besorgt: Visual Studio 2010.

Bis jetzt bin ich mit dem ganzen zufrieden, nur sind leider die 
Default-Einstellungen etwas mühsam:
-Beim Code schreiben war beim 2008 ein Feature, dass so Hints 
(Autovervollständigung) eigeblendet hat, mit den Möglichkeiten (z.B Tag, 
Add, Text, Name, Color...) und jetzt beim 2010 ist das nicht mehr der 
Fall. Weiss jemand, wo man das einstellen kann??
-Ausserdem werden beim Compilieren, falls Fehler vorhanden sind, 
Zeilennummern angegeben, aber beim Editor sind keine Nummern 
eingeblendet.
Ist dies auch irgendwie möglich???


EDIT:
Das mit den Zeilennummern habe ich gefunden:
Tools->Options->Text Editor->All Languages -> Line numbers

Danke für die Hilfe

MFG
P.Berger

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> -Ausserdem werden beim Compilieren, falls Fehler vorhanden sind,
> Zeilennummern angegeben, aber beim Editor sind keine Nummern
> eingeblendet.

Braucht man die? Ein Doppelklick auf die Fehlerzeile springt im 
Editorfenster zur passenden Codezeile. Schon immer.

von Karl H. (kbuchegg)


Lesenswert?

Rufus t. Firefly schrieb:
>> -Ausserdem werden beim Compilieren, falls Fehler vorhanden sind,
>> Zeilennummern angegeben, aber beim Editor sind keine Nummern
>> eingeblendet.
>
> Braucht man die?

Nur wenn man Zahlenfetischist ist.

> Ein Doppelklick auf die Fehlerzeile springt im
> Editorfenster zur passenden Codezeile. Schon immer.

F4 macht dasselbe.

von Arc N. (arc)


Lesenswert?

Patrick B. schrieb:
> Hallo miteinander
>
> Ich habe mir heute eine neue Version von Visual C++ Express Edition 2008
> besorgt: Visual Studio 2010.
>
> Bis jetzt bin ich mit dem ganzen zufrieden, nur sind leider die
> Default-Einstellungen etwas mühsam:
> -Beim Code schreiben war beim 2008 ein Feature, dass so Hints
> (Autovervollständigung) eigeblendet hat, mit den Möglichkeiten (z.B Tag,
> Add, Text, Name, Color...) und jetzt beim 2010 ist das nicht mehr der
> Fall. Weiss jemand, wo man das einstellen kann??

Findet man unter den Text Editor-Optionen
C# Text Editor -> IntelliSense
C/C++ Text Editor -> Advanced (rechts in der Liste ziemlich am Ende)
F# automatisch bzw. nicht abschaltbar

http://msdn.microsoft.com/en-us/library/ecfczya1(VS.100).aspx

von Patrick B. (p51d)


Lesenswert?

Ok, bei mir sind volgende Einstellungen:

Auto Quick Info: True
Disable IntelliSense: False
Disable Auto Updating: False
Disable Error Reporting: False
Diesable Squiggles: False
Disable #include Auto Complete: False
Max Cached Translation Units: 5

soweit ich das auf Deutsch übersetzen kann, sollte es laufen.
Hab auch noch sicherheitshalber ein update von Java gemacht, aber ohne 
erfolg.

Nachtrag:
Kanns sein, dass das Programm noch nicht so sauber läuft? plötzlich 
kommt nähmlich auch noch folgende Meldung, wenn ich auf Help->Manage 
Help Settings:
>An unhandled Microsoft.NET Framework exeption occurred in HelpLibManager.exe
>[4872]
>Possible Debuggers
>....
>....
>Do you want to debug using the selected debugger?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du bist Dir im Klaren darüber, daß das eine Beta-Version ist?

Die finale Version soll am 22.3.2010 'rauskommen.

Warum verwendest Du nicht weiterhin die noch aktuelle Vorgängerversion?

von Patrick B. (p51d)


Lesenswert?

Rufus t. Firefly schrieb:
> Du bist Dir im Klaren darüber, daß das eine Beta-Version ist?

Sicher, nur als Vergleich: Microsoft macht mit Windows auch Beta-Test 
mit Millionen von Nutzern.
Ich werde wohl doch wieder auf das alte umteigen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn MS eine Software als "Beta-Version" bezeichnet, dann ist das doch 
wohl ein Wink mit dem Zaunpfahl, vor allem, wenn Du Release-Versionen 
von MS auch als Beta-Version ansiehst ... In Deiner Denke also ist das 
eine "Alpha-Version".

Soll denn VS2010 irgendwelche Vorteile gegenüber VS2008 bieten, die man 
als real existierender Entwickler auch brauchen kann?

von Patrick B. (p51d)


Lesenswert?

Um Vorteile Programmspezifisch bezeichnen zu können, wollte ich ja mir 
mal die 2010ner Version ansehen.
Habe bis jetzt leider nur einen Nachteil gefunen: Bei der Complete 
Installation wird einem der PC regelrecht zugeballert mit neuen 
Programmen...
Framework 3 und 4, kompatibilitätsprogramme für ältere vc++ Versionen, 
SQL Server und und und.
Alleine Visual Studio ist 2 GB gross und mit dem ganzen rest kommts etwa 
auf 6 GB.
Installation und Deinstallation ist auch extrem Zeitaufwändig: ca 1h


Nochwas:
In der Schule habe ich bis jetzt nur mit Borland C++ 200X (weiss nicht 
genau welches) programmiert, und zuhause respektive im Betrieb mit 
Visual C++ Express Edition 2008.
Bei Borland konnte man bei den Objekten die Tag's quasi als Flag 
ansehen, aber das funktioniert bei VC++EE irgendwie nicht so.
Beispiel:
Funktioniert auf Borland
1
buttonConnect->Tag = ~buttonConnect->Tag;
bei VC++EE aber nicht. Es kommt immer eine blöde Fehlermedung betreffend 
'~'.
Wenn man aber eine Variable dafür nimmt, läufts.
Was mache ich falsch?

MFG
P.Berger

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Keine Ahnung, was Du da meinen magst.

von Patrick B. (p51d)


Lesenswert?

Rufus t. Firefly schrieb:
> Keine Ahnung, was Du da meinen magst.

???
geht mir mit deiner Antwort ähnlich. ich weiss nicht genau was du damit 
meinst

Bei den Objekten hats ja Eigenschaften, darunter gibts auch noch 'Tag', 
welchen man auf 1 oder 0 setzen kann.
~ =>ist die invertierung sprich aus 0 wird 1 und aus 1 wird 0.
buttonConnect ist der Name eines Button
jetzt kann man da sowas machen:
1
buttonConnect->Tag = ~buttonConnect->Tag;
2
if(buttonConnect->Tag)
3
{
4
irgendwas
5
}
6
else
7
{
8
ansonsten das hier.
9
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du meinst also vermutlich boolsche Membervariablen einer Klasse.

Je nachdem, wie Du die deklariert hast, ist Deine Invertierungsnotation 
zulässig, oder auch nicht.

von Patrick B. (p51d)


Lesenswert?

ok, jetzt ist mein begrenztes Wissen von cpp ausgeschöpft:
> boolsche Membervariable
?? Ich kenne Boolsche Algebra aber das habe ich noch nie gehört

Bei so ziemlich allem kann man Bei den Eigenschaften der Objekte unter 
der Rubrik Daten zwischen den 3 Dingen auswählen respektive diese 
setzen:
- Application Settings
- DataBlindlings
- Tag

Wie muss ich also jetzt diesen Tag deklarieren??

Sry, fange erst so mit C++ an. Bis jetzt habe ich nur C für MCU's 
benützt.

von Arc N. (arc)


Lesenswert?

Rufus t. Firefly schrieb:
> Du meinst also vermutlich boolsche Membervariablen einer Klasse.
>
> Je nachdem, wie Du die deklariert hast, ist Deine Invertierungsnotation
> zulässig, oder auch nicht.

Tag ist/war ein Member von TComponent vom Typ int, im .Net-Framework ist 
das vom Typ object d.h. man muss casten. Stichwort: boxing/unboxing.

> Wenn MS eine Software als "Beta-Version" bezeichnet, dann ist das doch
> wohl ein Wink mit dem Zaunpfahl, vor allem, wenn Du Release-Versionen
> von MS auch als Beta-Version ansiehst ... In Deiner Denke also ist das
> eine "Alpha-Version".

Bei der Beta 2 nur mit dem halben Zaunpfahl. Stichwort "Go Live"-Lizenz.
Hatte bis jetzt auch noch keine gravierenden Probleme mit der Beta2, die 
hier allerdings auch nur nebenher läuft und nicht vollständig produktiv 
eingesetzt wird.

> Soll denn VS2010 irgendwelche Vorteile gegenüber VS2008 bieten, die man
> als real existierender Entwickler auch brauchen kann?

Bessere IntelliSense-Unterstützung bei großen C++-Projekten (siehe 
unten...), C++0x, MFC-Verbesserungen (die beiden letzten gibt's auch für 
VS2008), bessere MDI und Multi-Monitor-Unterstützung, besserer Debugger 
Parallel-Stacks, Historical-Debugger, .NET 4.0, WPF-Tools, 
Entity-Framework-Unterstützung, etliche Funktionen im Bereich 
Team-System/Architektur/Test etc.pp.
Genau dafür gibt's ja gerade solche Betas und CTPs, damit man sich 
ansehen kann, ob und wann ein Umstieg lohnenswert ist.

p.s. hab's hier gerade nochmal getestet, IntelliSense funktioniert nur 
bei richtigen, nativen C++-Projekten, nicht bei C++/CLI.
Anscheinend soll das wohl auch so bleiben (siehe die Kommentare zu 
http://blogs.msdn.com/vcblog/archive/2009/05/27/rebuilding-intellisense.aspx)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

>> Soll denn VS2010 irgendwelche Vorteile gegenüber VS2008 bieten, die man
>> als real existierender Entwickler auch brauchen kann?
>
> Bessere (...) C++0x, MFC-Verbesserungen (die beiden letzten gibt's auch für
> VS2008),

Pray tell: Wo?

von Arc N. (arc)


Lesenswert?

Patrick B. schrieb:
> ok, jetzt ist mein begrenztes Wissen von cpp ausgeschöpft:
>> boolsche Membervariable
> ?? Ich kenne Boolsche Algebra aber das habe ich noch nie gehört
>
> Bei so ziemlich allem kann man Bei den Eigenschaften der Objekte unter
> der Rubrik Daten zwischen den 3 Dingen auswählen respektive diese
> setzen:
> - Application Settings
> - DataBlindlings
> - Tag
>
> Wie muss ich also jetzt diesen Tag deklarieren??

Garnicht, einfach den Wert setzen egal ob String, Int oder Double.
Im Source geht's dann z.B. so
1
  x->Tag = 1234;
2
  int result = (int)x->Tag;

>
> Sry, fange erst so mit C++ an. Bis jetzt habe ich nur C für MCU's
> benützt.

Falls mit dem .NET-Framework gearbeitet werden soll, sollte man lieber 
zweimal überlegen, ob man mit C++/CLI arbeiten will.
Alle anderen Sprachen wie C#, VB, F#, Scala etc. sind dafür wesentlich 
besser geeignet.

von Arc N. (arc)


Lesenswert?

Rufus t. Firefly schrieb:
>>> Soll denn VS2010 irgendwelche Vorteile gegenüber VS2008 bieten, die man
>>> als real existierender Entwickler auch brauchen kann?
>>
>> Bessere (...) C++0x, MFC-Verbesserungen (die beiden letzten gibt's auch für
>> VS2008),
>
> Pray tell: Wo?

VS2008 Feature Pack bzw. im SP1 (MFC + TR1, inwieweit die MFCs 
deckungsgleich sind: keine Ahnung, ebenso ob's bei den restlichen 
C++0x-Features wieder einen Backport geben wird)

von Patrick B. (p51d)


Lesenswert?

Arc Net schrieb:
> Garnicht, einfach den Wert setzen egal ob String, Int oder Double.
> Im Source geht's dann z.B. so
>
1
>   x->Tag = 1234;
2
>   int result = (int)x->Tag;
3
>

hab hier das mehrmals unter folgendem Beispiel mti einem Timer versucht:
1
x->Tag = ~x->Tag;             // Ist Standart C/C++ Operator (NOT)
2
if(x->Tag){                   // Toggelt einfach zwischen Rot und Grün
3
   labelTest->Text = "Grün";
4
}
5
else{
6
   labelTest->Text = "Rot";
7
}
aber dabei entsteht immer ein Fehler. Selbst wenn ich bei den 
Eigenschaften als Init-Wert '0' gesetzt habe.

>> Sry, fange erst so mit C++ an. Bis jetzt habe ich nur C für MCU's
>> benützt.
>
> Falls mit dem .NET-Framework gearbeitet werden soll, sollte man lieber
> zweimal überlegen, ob man mit C++/CLI arbeiten will.
> Alle anderen Sprachen wie C#, VB, F#, Scala etc. sind dafür wesentlich
> besser geeignet.
Da habe ich nicht viel Auswahl, weil in der Berufsschule wird nur C++ 
als Windows-Programmiersprache behandelt, da vorranging C für 
Mikrocontrollers mühsam den Schülern beigebracht wird (obwohl in der 
Schule leider nicht wirklich eine gute Programmierkunst gefördert wird, 
sondern man nur gerade soviel lernt, wie der Lehrer will).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> VS2008 Feature Pack bzw. im SP1 (MFC + TR1, inwieweit die MFCs
> deckungsgleich sind: keine Ahnung, ebenso ob's bei den restlichen
> C++0x-Features wieder einen Backport geben wird)

Danke für die Antwort.
Ich dachte, das wäre was neueres; das Feature Pack gibts seit April 08.

von Arc N. (arc)


Lesenswert?

Rufus t. Firefly schrieb:
>> VS2008 Feature Pack bzw. im SP1 (MFC + TR1, inwieweit die MFCs
>> deckungsgleich sind: keine Ahnung, ebenso ob's bei den restlichen
>> C++0x-Features wieder einen Backport geben wird)
>
> Danke für die Antwort.
> Ich dachte, das wäre was neueres; das Feature Pack gibts seit April 08.

Ich bin auch seit längerem nicht mehr auf dem neusten Stand was die MFC 
angeht, bei den letzten großen Sachen waren noch VS6 und später VS2003 
aktuell (zwischenzeitlich nur ein paar kleinere Projekte für Windows 
Mobile).

Patrick B. schrieb:
> Da habe ich nicht viel Auswahl, weil in der Berufsschule wird nur C++
> als Windows-Programmiersprache behandelt, da vorranging C für
> Mikrocontrollers mühsam den Schülern beigebracht wird (obwohl in der
> Schule leider nicht wirklich eine gute Programmierkunst gefördert wird,
> sondern man nur gerade soviel lernt, wie der Lehrer will).

Wirklich C++/CLI mit WinForms?

> hab hier das mehrmals unter folgendem Beispiel mti einem Timer
> versucht:x->Tag = ~x->Tag;             // Ist Standart C/C++ Operator
> (NOT)
> if(x->Tag){                   // Toggelt einfach zwischen Rot und Grün
>    labelTest->Text = "Grün";
> }
> else{
>    labelTest->Text = "Rot";
> }

Das Problem ist zum einen, das der Designer aus dem Eintrag unter Tag 
einen String macht (wie das aussieht, findet man bei 
InitializeComponent), zum anderen ist, wie oben schon gesagt, Tag 
(erstmal) vom Typ object.
(War oben etwas unklar ausgedrückt)
Zum ersten Teil: Lässt sich afaik nicht ändern, d.h. man macht diese 
Initialisierung besser im Contructor nach dem Aufruf von 
InitializeComponent() ausser man will dort einen String haben.
Zum zweiten Teil: Tag ist vom Typ object d.h. man muss angeben was man 
dann gerne wieder zurück hätte (cast, unboxing) bevor man mit dem 
Ergebnis etwas machen kann. Erklärung nach dem Beispiel
Bsp.
1
  public ref class Form1 : public System::Windows::Forms::Form {
2
  public:
3
      Form1(void) {
4
         InitializeComponent();
5
6
         // bool, false wird verpackt (boxing)
7
         Tag = false; 
8
9
         // true wird entpackt (unboxing) und negiert
10
         // Operator ist hier !, ~ gibt's nur bei Integern
11
         Tag = !(bool)Tag;
12
         // Tag ist hier true
13
14
         // int
15
         // ohne expliziten cast gibt's hier eine Warnung,
16
         // da der Typ nicht genau genug feststeht, siehe Links
17
         Tag = 0; 
18
         Tag = ~(int)Tag; 
19
         // Tag ist hier -1 (0xffffffff)
20
      }
21
22
      ...

Was da genau passiert ist in etwa folgendes,
Tag ist vom Typ System::Object d.h. intern nur eine Referenz (ein 
Zeiger) auf ein Objekt der Klasse System::Object. Wird Tag nun z.B. ein 
Integer zugewiesen, muss dieser Wert irgendwie zu System.Object 
"kompatibel" werden.
D.h. der Compiler erzeugt erstmal ein passendes Objekt im Speicher, 
kopiert den Wert in das Objekt und weist dieses Objekt Tag zu.
Beim Unboxing passiert dann in etwa folgendes: Erst wird nachgesehen, 
was da nun tatsächlich in dem Objekt steht, dann wird nachgesehen was 
der Programmierer gerne hätte, falls das passt (Typ stimmt) wird der 
Wert aus dem Objekt herausgeholt, passt der Typ nicht, gibt's eine 
Exception.
(Das ganze ist zudem nicht sehr performant...)

http://msdn.microsoft.com/en-us/library/c53ss7ze(VS.100).aspx
http://msdn.microsoft.com/en-us/library/ttffzt4b(VS.100).aspx

http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx
(Erklärung zum Boxing/Unboxing in C#)

von Patrick B. (p51d)


Lesenswert?

Arc Net schrieb:
> Patrick B. schrieb:
>> Da habe ich nicht viel Auswahl, weil in der Berufsschule wird nur C++
>> als Windows-Programmiersprache behandelt, da vorranging C für
>> Mikrocontrollers mühsam den Schülern beigebracht wird (obwohl in der
>> Schule leider nicht wirklich eine gute Programmierkunst gefördert wird,
>> sondern man nur gerade soviel lernt, wie der Lehrer will).
>
> Wirklich C++/CLI mit WinForms?

Ja, wir machen das aber mit Borland C++ Builder und dort erstellen wir 
VCL-Windows-Form-Applikationen, oder so ähnlich heissen die.

> (Das ganze ist zudem nicht sehr performant...)
als Alternative kann man ja ein Register machen (z.B. ButtonFlagReg) bei 
dem jedes Bit für ein anderer Button steht. Dieses Register müsste aber 
global sein, damit man von jeder Funktion aus darauf zugreiffen könnte.
Funktioniert dies so?
1
#include /*  */
2
//
3
//
4
5
int ButtonFlagReg = 0;
6
7
int main(void){
8
   Form1();                    // Flags können von der Gui gesetzt werden
9
   //
10
   //
11
   if(ButtonFlagReg & (1<<X)){ // Abfragen ob Flag des entsprechenden Button gesetzt ist (Define verwentet)
12
   // etwas machen
13
   }
14
   return 0;
15
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.