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
> -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.
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.
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
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?
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?
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.
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?
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
Keine Ahnung, was Du da meinen magst.
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 | }
|
Du meinst also vermutlich boolsche Membervariablen einer Klasse.
Je nachdem, wie Du die deklariert hast, ist Deine Invertierungsnotation
zulässig, oder auch nicht.
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.
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)
>> 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?
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.
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)
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).
> 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.
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#)
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.
|