danke für eure hilfe
letztendlich lags wohl doch an dem visual studio - bei einem anderen projekt gings nämlich später als ichs nochmal probiert hatte - hab nur vergessen hier nochmal zu schreiben 😉
gruß
v1vec
Hallo miteinander !
Ich sitze derzeit an einem Excel-AddIn das eine abfrage aus einer SQL-Datenbank macht und in excel importiert.
Grundlage ist folgendes Beispiel (für den Excel-Teil):
http://msdn.microsoft.com/en-us/office/bb980207.aspx
Ich habe mir die Beispieldateien heruntergeladen und versucht zu kompilieren aber bekomme folgenden fehler:
zum einen 10 warnungen ala:
Warnung 29 Dieser Verweis konnte nicht aufgelöst werden: Die Microsoft.VisualStudio.Tools.Office, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL-Assembly konnte nicht gefunden werden. Vergewissern Sie sich, dass die Assembly auf dem Datenträger vorhanden ist.. Wenn dieser Verweis für Ihren Code erforderlich ist, können beim Kompilieren Fehler auftreten. HDI-VSTO-Excel-Arrays-CS
und
Warnung 34 Die Komponente "Microsoft.VisualStudio.Tools.Applications.AddInBase", auf die verwiesen wird, wurde nicht gefunden.
sowie 28 Fehler ala:
Fehler 2 Der Typ- oder Namespacename "Tools" ist im Namespace "Microsoft.Office" nicht vorhanden. (Fehlt ein Assemblyverweis?) C:...\HDI-VSTO-Excel-Arrays-CS\HDI-VSTO-Excel-Arrays-CS\Ribbon1.cs 5 24 HDI-VSTO-Excel-Arrays-CS
und
Fehler 3 Der Typ- oder Namespacename "VisualStudio" ist im Namespace "Microsoft" nicht vorhanden. (Fehlt ein Assemblyverweis?) C:...\HDI-VSTO-Excel-Arrays-CS\HDI-VSTO-Excel-Arrays-CS\Sheet1.cs 7 17 HDI-VSTO-Excel-Arrays-CS
Entwicklungsumgeebung ist ein frisch installiertes visual studio 2008 pro mit vsto - mit dem sollte das doch problemlos gehen ?
Grüße und danke für jede hilfe 😉
Edit: habs jetzt hinbekommen - hab einfach mit dem assistenten nen neues projekt erstellt und dann den code rüberkopiert
wahrscheilich war es einfach die falsche version der assemblies die nich verfügbar war oder so was -> erledigt
also irgendwie wird das alles immer seltsamer:
wenn ich topmost schon im vorhinein oder mit dem OnLoad-Ereignis setze passiert nichts (bzw. genau das gleich wie als hätt ich es nich gesetzt) - setze ich topmost hingegen erst (oder wieder) wenn das fenster aktiv ist (z.B. durch OnClick) funktioniert es
also das is alles sehr seltsam
(F.Focus() bringt leider auch keinen Erfolg, wahrscheinlich deshalb weil das Fenster davon ausgeht das es den Focus hat (wird auch als aktiv gezeichnet))
nach ner weile googlen hab ich rausgefunden das es einen bug im visual studio gibt der genau dieses verhalten (form hinter konsole) hervorruft wenn man das programm direkt aus der entwicklungsumgebung aufruft
allerdings ist das nicht alles, dieses verhalten tritt für den fall das man das programm direkt aus dem ordner aufruft auch dann auf wenn man zuvor einen Read befehl ausgeführt hat
folgendes funktioniert also richtig (wenn man es aus dem ordner aufruft
static void Main(string[] args)
{
Form1 F = new Form1();
F.ShowDialog();
}
das hingegen nicht:
static void Main(string[] args)
{
Console.ReadKey();
Form1 F = new Form1();
F.ShowDialog();
}
sinn macht das ja keinen - leider brauch ich aber ReadLine() und ReadKey()
falls jemand also ein workaround weiß - immer her damit
ansonsten schonmal danke, ich denke wir werden auf ein update des studios warten müssen -.-
danke schonmal, leider gehts aber trotzdem nich
der dialog is dann zwar in der mitte des bildschirms aber immernoch hinter der Konsole
Ich hab zum test mal folgendes gemacht (um es besser nachvollziehbar zu machen):
Form1 F = new Form1();
F.StartPosition = FormStartPosition.CenterScreen;
F.ShowDialog();
das ergebnis is das die konsole zwar anhält bis ich die form schließe, aber die form bleibt beim start in hintergrund
hab ich vllt irgendwas vergessen ? X(
ps: weder F.TopLevel noch F.TopMost ändern da was dran 🙁
Hallo
Ich verwende Visual Studio C# 2008 Express Edition und hab ein Konsolenprogramm erstellt das eine ebenfalls in dem Projekt enthaltene Form aufrufen soll. Der Aufruf an sich funktioniert auch ohne probleme, allerdings ist die Form dann immer im Hintergrund was sehr unschön ist - zumal die Konsole während der Zeit eh blockiert ist (was auch in meinem sinn ist). Der Dialog soll dazu verwendet werden das ergebnis der vorherigen berechnungen graphisch darzustellen. Auch das setzen der TopMost Variable in der Form hat nix gebracht.
Mein Code sieht derzeit so aus (gekürzt):
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 F = new FormXY();
Application.Run(F);
Hat jemand ne idee woran das hängt und wie ich die form in den vordergrund bekomme ?
hi
hab mir auf meinem xp-system irgendwas gefangen und bin deshalb mit vista unterwegs, wo ich aber vs nich drauf hab, deshalb entschuldigt bitte das ich mich nicht gemeldet habe.
zur größenordnung:
bei einem testlauf hatte ich nach einem durchlauf eine arbeitsspeicherauslastung von fast 250 mb ^^
der sinn ist, alle möglichkeiten von additionen die aus den elmenten aus preis gebildet werden können zu bilden, und (wenn möglich sortiert) zu speichern, so dass man, wenn man einen wert vorgibt, leicht den am nächsten kleineren findet, und auch weiß was man adddieren muss um ihn zu bekommen.
eure ansätze wer ich dann demnächst mal versuchen zu verwirklichen.
gruß v1vec
PS: Im Prinzip funktionierts ja auch, aber es kommt mir irgendwie so vor als würde der viel unnötiges zeug machen, und meine frage war nur, ob irgendjemand auf anhieb was einfällt.
Hi
also ich hab ein bissl code gescrieben und ausgeführt und der is sooooo lahm
ich denk ma das hängt am häufigen kopieren von _Einkäufe nach Einkäufe.
Wie durchlaufe ich das effizienter ?
Thx für alles was kommt ^^
mfg v1vec, der erst ma ferseh gucken ist
ps: der code
Dictionary<uint, List<int>> _Einkäufe = new Dictionary<uint, List<int>>();
do
{
_Einkäufe.Clear();
foreach (KeyValuePair<uint, List<int>> einkauf in Einkäufe)
{
foreach (KeyValuePair<int, uint> preis in Preise)
{
if ((!Einkäufe.ContainsKey(preis.Value + einkauf.Key))
&& (!einkauf.Value.Contains(preis.Key))
&& (!_Einkäufe.ContainsKey(preis.Value + einkauf.Key)))
{
_Einkäufe.Add(preis.Value + einkauf.Key, new List<int>(einkauf.Value));
_Einkäufe[preis.Value + einkauf.Key].Add(preis.Key);
}
}
}
foreach (KeyValuePair<uint, List<int>> var in _Einkäufe)
{
Einkäufe.Add(var.Key, var.Value);
}
} while (_Einkäufe.Count != 0 );
hi
also den grund dafür das alles erst dreimal geschrieben wird bevor es gändert wird hab ich auch nich gefunden, aber ich würde statt eines arrays eine Liste nehmen.
Da kannst du dann einfach immer ein elment anhängen (add) und danach gucken wie viele elmente gerade drin sind (count) und dann evtl am anfang welche abschneiden (RemoveRange(0, Count - Max))
gruß v1vec
Kopiert hab ich mit dem Konstruktor und durchlaufen mit foreach:
Dictionary<int, List<int>> Req2 = new Dictionary<int, List<int>>(Req);
foreach (intk in Req[j])
{
if (!Req[i].Contains(k))
Req2[i].Add(5);
}
edit: reihenfolge geändert 😉
hi
Ich möchte ein Dictonary (Dictonary<int,List<int>>) durchlaufen und dabei eine kopie davon verändern indem ich elemente zur list hinzufügen. Aber ich erhalte immer eine InvalidOperationException wenn ich das programm starte 🙁
Hat jemand eine Rat für mich?
Gruß v1vec
Hi herbivore
Hab da mal geschaut, ich blick aber nich so recht durch.
Es gibt da ja drei Arten nach denen die Berechtigungssätze verteilt werde.
1.Organisation
2.Computer
3.Benutzer
bei 1 und 3 gibt es nur eine code gruppe und die hat jeweils fulltrust
bei 2 gibt es mehrere, unter anderen auch MyComputer mit der Bedingung das das Programmm im Arbeitsplatz sein muss. Und da steht dann auch full trust.
brauch ich etwa mehr rechte oder is das doch der falsche ansatz?
Gruß v1vec
Hi
Kann man mit dem .Net-Framework Registry-Berechtigungen setzten, auch wenn man nur Besitzer ist und eigentlich nicht einmal das Recht hat Den Inhalt zu lesen?
Kann man sich als User mit Administrator-Rechten zum Besitzer machen (wieder mit .net, gui weiß ich ja wie es geht 😉 )
Hab das zwar schon probiert aber immer wieder ne UnauthorizedAccessException bekommen.
Ich bin für alle Tips offen.
mfg v1vec
Hi
apropos Dokumentation
hab grad ma geguggt und ich hab im .net Framework ordner von 2.0 keine doku
ich hab nur die vom 1.1
muss man die extra installieren oder anders aufrufen?
hab das sdk mit visual studio (damals express) installiert
das hilft zwar wenn er das programm nur selbst benutzt (und eben replace benutzt), aber nicht wenn ein anderer nutzer subst benutzt.
entweder du löst subst auf, oder du lässt die datei vom betriebssystem sperren (ka wie das in .net geht 😁 ) und dann kannst du sie beim zweiten öffnen eh nur schreibgeschützt oder garnich öffnen.
mfg v1vec
Ich hab leider kaum Erfahrung mit lokalen Hooks, aber vllt hilft es ja wenn du mal beschreibst was du überhaupt hookst.
mfg v1vec
Ich weiß jetz nich gant was du meinst, aber es gibt allgemein 2 Möglichkeiten:
Die Datei soll auf der Festplatte gespeichert werden
So hattest du es ja. Vorteil is eben das auch andere Programme Zugriff haben.
Eine Ressourcendatei
Damit wird deine Datei mit in die exe (oder was auch immer) kompiliert. Damit hat man zumindest nich so einfach zugriff ^^
Du musst wahrscheinlich die funktion die aufgerufen werden soll in eine dll packen, weil man sie sonst nur aus der eigenen exe aufrufen kann, nicht aber der "gehookten" exe.
siehe auch:
OldNewThing Blog
und genau das is unnötig, da:
name1.class1 a = name1.class1();
ob man jetzt nämlich
name1.class1 a;
oder
using name1;
class1 a;
schreibt is egal
PS: Referenz braucht man natürlich trotzdem
for(int i = 0;i<array.length;i++)
{
for(int j = i+1;j < array.length;j++)
{
//hier vergleichen
if(array[i] == array[j])
MessageBox.Show("Damn!");
}
}
Hi
gint es in .net 2.0 eine klasse mit der man latex oder so ähnliche strings erstellen und vor allem malen kann ?
danke schon im vorraus
v1vec
Hi
Ich hab jetzt mitlerweile ne Lösung gefunden
Das war meine AusgangsStruktur:
public struct Unicode_String
{
public ushort Length;
public ushort MaximumLength;
public IntPtr Buffer;
}
hab den Buffer mit Marshal.Copy in ein bytearray kopiert und mit Encoding.Unicode.GetString() dekodiert
hi
ich hab nen zeiger auf einen puffer und dessen länge
in dem puffer sind (Unicode)chars.
wie bekomm ich die als char-array in ne variable ?
danke für alle vorschläge
Ich hatte das eher allgemein gedacht.
in meinem konkretem fall ist es ein void*.
geht das auch mit IntPtr?
hi
wie muss man denn eine funktion formulieren damit sie einen zeiger zurückgibt (DllImport 😉) (mit ref klappets nich:()
danke für alle hinweise
v1vec
wie gesagt das war so als beispiel und erfüllt genau den gesuchten zweck also hab ichs reingepostet.
und ob das unbedingt schlechter ist als alles in einen string zu konvertieren is fraglich
is natürlich nicht ganz schön anzusehen, das stimmt
oder so:
static char[] hexDigits = {
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
public static string ToHexString(byte[] bytes) {
char[] chars = new char[bytes.Length * 2];
for (int i = 0; i < bytes.Length; i++) {
int b = bytes[i];
chars[i * 2] = hexDigits[b >> 4];
chars[i * 2 + 1] = hexDigits[b & 0xF];
}
return new string(chars);
}
so stehts als beispiel in meiner lokalen msdn (deshalb auch kein link 🙁 )
edit: habs doch noch gefunden:
http://msdn2.microsoft.com/de-de/library/system.byte.aspx
Wozu soll das eigentlich dienen?
Damit man die werte public lesen aber nur private schreiben kann?
das geht auch so:
int i
{
get
{
return i;
}
private set
{
i = value;
}
}
Das spart immerhin eine zeile pro variable 8)
Ich glaube mit | hat er eher einen Strich gemeint der angezeigt wird wenn ein ungültiges zeichen angezeigt erden soll (und eben nicht angezeigt werden)
das hatte ich z.B. mal bei '\n' in ner singleline textbox (oder so, is schon ne weile her)
gut hab mich vllt etwas unpräzise ausgedrückt
du musst dir eben überlegen worauf du dem plugin / der dll zugriff geben willst und dann entsprechende prototypen für die in der dll vorhandenen funktionen formulieren
wenn du also mit der dll ein fenster bearbeiten willst brauchst du eben eine funktion in der dll die ein fensterhandle entgegennimmt und dann bearbeitet.
vllt auch noch ne callback-funktion die Nachrichten von der dll entgegen nimmt (ich weiß das das win-api und keine .net begriffe sind, hoffe aber du weißt was ich meine 😉)
Hi tigersammy
Fals du es doch selbst schreiben willst solltest du dich erst einmal über Dlls informieren und dann eben ein Interface schreiben.
Wenn ich noch ne Seite finde häng ich sie an
sieht zumindest in der beschreibung ganz passend aus 😁
Danke
Hi
Gibt es sowas wie die stl-map aus c++ auch in c#?
Ich versteh den Sinn dahinter nich ganz
Also wenn man jetz schreibt
Liste EineListe = new Liste();
Liste AndereListe = new Liste(foo);
EineListe = AndereListe;
erwartet man doch das EineListe modifiziert wird und nich umgekehrt oder?
Falls du wirklich das bezweckst was du geschrieben hast solltest du eine Funktion schreiben und set und get in Frieden lassen.
das hat wohl eher damit zu tun das du dem stringarray keinen Speicher zugewiesen hast:
int[] IntegerArray;
Console.Write(IntegerArray.Length); //Fehler da IntegerArray kein Speicher zugewiesen ist (initialisiert)
int[] AnderesIntegerArray = new int[22];
Console.Write(AnderesIntegerArray.Length) // Richtig;
siehe auch:
Guide to C# - Arrays
Edit: Link + Beispiel (hoffentlich) verbessert
Thx für die schnelle Antwort
@sbertl000:
Hättest ruhig noch schreiben können das ich das erst in eine Bitmap konvertieren muss 😁
habs aber ja gefunden 8)
Hi
Ich hab ein Bild folgendermaßen geöffnet:
System.Drawing.Image Bild = System.Drawing.Image.FromFile(openFileDialog1.FileName);
Jetzt möchte ich gerne auf einzelne Pixel zugreifen
Wie geht das denn?
Eigentlich is das mit dem Passwort recovern und setzen doch unnötig oder?
Mit autologin dürfte er es ja nich abfragen.
Falls du es doch ändern willst:
Das Passwort als solches kannst du nich ändern.
Aber es gibt einen RegKey der einen verschlüsselten hash des Unicode Passworts enthält
nähere Infos: http://board.protecus.de/t12708.htm
achso: der key is natürlich geschützt
d.h. du hast auch als admin keinen zugriff
das kannst du aber ändern
hab das aber noch nich gemacht
Ich hab das immer mit
int foo = Convert.ToInt32(str)
gamacht. Wo is da der Unterschied zu parse?
sry habs auch grade gefunden
ich hatte zuerst die Kategorieansicht aktiviert und muss es da irgendwie übersehen haben
danke für deine tollerante antwort 😁 😉
Die einzige Eigenschaft die ich gefunde hab war OwnerDraw, da hab ich aber keine Lust zu 😁
was hast du denn gemeint?
Hi
Kann man in einer ListView in der Detail Ansicht auch eine ganze Zeile markieren und vor allem von überall (also nich nur wenn man die schrift anklickt)
Tschö und danke für alle Tips die ihr habt ^^
v1vec
hab den fehler gefunden
hab noch ne click methode gehabt die das Kontextmenü geöffnet hat =) =)
Hi an alle
Ich hab nen Dialog (standard-form)
darin is ein listview-element das mit einem Kontextmenü verknüpft ist
wenn ich jetz ein element in die liste hinzufüge erscheint bei einem links(!)-click das Kontextmenü, aber nicht neben der maus sondern an einer festen stelle.
Bei einem Rechtsklick ist alles normal.
Warum ist das so und wie kann man das ändern?
mfg v1vec
die ShowDialog() Funktion is doch vollkommen normal oder?
immer gerne 8)
hab das aber auch demletzt gebraucht 😁
Versuch mal MouseUp als ereigniss
hat bei mir immer funktioniert
Danke für die schnelle antwort
bin das wohl noch zu sehr gewohnt das es für (stl)lists keinen indexzugriff gibt
guten abend
zu ostern nur ne kurze frage:
wie kann ich bei einer list<> auf das erste element zugreifen?
gibts da eine äquivalente funktion zu .begin() aus der stl?
danke schonmal und frohe feiertage
na weil ich noch andere funktionen im programm hab (ich will hier nicht abschweifen) die eben nicht alle in ein fenster passen und da hab ich auch der übersicht halber mehrere dialoge gebastelt