Laden...

Forenbeiträge von sheitman Ingesamt 1.047 Beiträge

29.01.2007 - 15:20 Uhr

gratuliere =)

29.01.2007 - 15:10 Uhr

naja ein unsaubere lösung wäre dies hier


using (MySqlCommand cmd = conn.CreateCommand())) {
    cmd.CommandText = "SELECT Bezeichnung from KST";
    using (reader = cmd.ExecuteReader()) {
        comboBox1.BeginUpdate();
        comboBox1.Items.Clear();
        while(reader.Read()) {
            comboBox1.Items.Add(reader["Bezeichnung"].ToString());
        }
        comboBox1.EndUpdate();
    }
}

Es war eigentlich ganz simpel...
hier der Code zur Anschauung....

ja gut, da int einfach nicht mit zu verwenden is natürlich ne lösung^^ brauchst es ja dort eh nicht. trotzdem ist es seltsam das es nicht ging. irgendow wirst du ja mal mit der nummer arbeiten müßen und dort geht das wohl oder wie?

29.01.2007 - 11:19 Uhr

mach mal

Console.WriteLine(reader.GetInt32(0));

geht das?

29.01.2007 - 09:23 Uhr

hast du dir mal die comments zu dem artikel bei codeproject durchgelesen?

dort hatte auc heiner das problem und wurde auf einen anderen kommentar verwiesen wo die problematik des zugriffes aus verschiedenen threads diskutiert wurde... weil das machst du ja auch

29.01.2007 - 09:03 Uhr

ok, da tanzt mysql wohl bissl aus der reihe^^

also mal schaun
GetInt16 gibt ein short
GetInt32 gibt ein int
GetInt64 gibt ein long
zurück

also sollte das doch funktionieren

int kst = reader.GetInt32(0);
string bezeichnung = reader.GetString(1);

oder von was für nen typ ist bei dir in der datanbank die nummer?

29.01.2007 - 08:56 Uhr

mir ds ading mal schicken geht nicht oder?

26.01.2007 - 15:26 Uhr

benutz mal


int kst = reader.GetInt(0);
string bezeichnung = reader.GetString(1);
26.01.2007 - 14:32 Uhr

wie nicht auf dem zielrechner?
ist ja nur für testzwecke...

die runtime für vsto 2005 se hast du aber auch installiert oder?

26.01.2007 - 11:04 Uhr

Original von awacs.mod
Naja, ich hab das Addin ja explizit aus dem neuen Projekt-Template Excel 2003-Addin erzeugt. Noch eindeutiger geht's wohl kaum.

Falls es noch einen Schalter gibt, bin ich jedenfalls zu blöd um ihn zu finden.

hm dan nverwundert mich das schon...

hast du mal den rat aus meinem link befolgt damit er ne fehlermeldung ausgibt?

26.01.2007 - 10:29 Uhr

mal ne andere frage: die addins die man da jetz erstellen kann im vsto 2005 se, rein von microsoft her sind die auch lauffähig unter office 2003?

schau mal obs nicht doch irgendwo nen schalter oder ne property gibt... hab hier leider auch office 2007 und 2003 drauf sonst würd ich das ja auch mal testen...

nachtrag:
hab grad mal visual studio auf gemacht... da gibts auch 2 verschieden vorlagen... einmal office 2003 und einmal office 2007 addins... was hast du genommen? kann gut ein die sind inkompatibel zueinander.

25.01.2007 - 16:25 Uhr

klingt mir eher als ob er die methode nicht gefunden hat in der dll, aber die dll selbst schon

also brauchst keine referenz drauf setzen

nachtrag:
hab grad gegoogelt und das hier gefunden

auszug

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.InteropServices;
using System.IO;
using System.Text;
using System.Threading;

namespace TestTimesTwo
{
 class TestTimesTwo
 {
  [DllImport(@"libtimestwo.dll")]
  private static extern void libtimestwoInitialize();
  [DllImport(@"libtimestwo.dll")]
  private static extern void libtimestwoTerminate();
  [DllImport(@"libtimestwo.dll")]
  private static extern void mlfTimestwo(int num, ref IntPtr
theOutput,[In]IntPtr theInput);
  [DllImport(@"libmx.dll")]
  private static extern IntPtr mxCreateDoubleScalar([In]double value);
  [DllImport(@"libmx.dll")]
  private static extern IntPtr mxGetPr([In]IntPtr mxArray);
  [DllImport(@"mclmcrrt71.dll")]
  private static extern bool mclInitializeApplication(string options, int
count);
  [DllImport(@"mclmcrrt71.dll")]
  private static extern void mclTerminateApplication();

  [STAThread]
  static void Main(string[] args)
  {
   bool ret;
   double[] ans = new double[1];

   // Initialize libraries
   ret= mclInitializeApplication("NULL",0);
   libtimestwoInitialize();

   // Initialize arguments
   IntPtr inVal = mxCreateDoubleScalar(3);
   IntPtr outVal = IntPtr.Zero;

   // Call library function
   mlfTimestwo(1,ref outVal,inVal);

   // Get return value
   Marshal.Copy(mxGetPr(outVal),ans,0,1);

   // Print output
   Console.WriteLine("The return value is " + ans[0]);

   // Terminate libraries
   libtimestwoTerminate();
   mclTerminateApplication();
  }
 }

}

die methoden heißen also anders 😉

25.01.2007 - 15:34 Uhr

hm gibts sowas wie nen kompatibilitätsschalter?

25.01.2007 - 13:35 Uhr

naja das mit dem array eventuell nochmal überdenken...

private double[] avgTemp = new double[12];

public MonatsTemperaturA(double[] avgTemp) {
    for (int i = 0; i < avgTemp.Length; i++) {
        this.avgTemp[i] = avgTemp[i];
    }
}

dein privates array hat die länge 12... du prüfst werder die länge vom array was du an den konstruktor übergibst, noch beziehst dud ich nur auf die länge vom privaten array...

was ist wenn du null mitbekommst oder das array länger als 12?
da du das schema immer wieder verwendest gegebenenfalls mal überdenken^^

dann noch zu

private double[] avgTemp = new double[12];
public MyEnumerator(double[] avgTemp) {
    this.avgTemp = avgTemp;
}

da du avgTemp ja nen wert zuweist, brauchst du es nicht zu initialisieren... also das sollte reichen

private double[] avgTemp;
25.01.2007 - 11:26 Uhr

man köntne ja auch span benutzen... das macht keinen umbruch

25.01.2007 - 11:19 Uhr

Ist ja auch etwas unsiniger Code den du da schreibst^^

Also du sollst ja sicherlich eine eigene auf IEnumeraotr basierenden Klasse schreiben die dir deine Daten liefert...

Ohne eine eigen Klasse bauen zu wollen könnte man ja ganz eifnach das hier machen

public IEnumerator GetEnumerator() {
    return avgTemp.GetEnumerator();
}

Und den benutzt man dann um die einzelnen Elemente durchzugehen...


//aufruf der oberen methode
IEnumerator myEnumerator = myObjekt.GetEnumerator(); 
while(myEnumerator.MoveNext()) {
    object o = myEnumerator.Current;
    ...
}

25.01.2007 - 09:28 Uhr

hm

hab auch mal gegooglet hier hat jmd ein ähnliches problem
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1129906&SiteID=1

24.01.2007 - 14:36 Uhr

was macht updateview? bzw. welche arraylist ist andein view gebunden?
setz doch mal ne nrbeakpoint und schau dir ansonsten die liste mal an...

24.01.2007 - 14:33 Uhr

hm moment mal was heißt du hast folgende schlüssel erstellt?
per hand eingetragen oder die sind durch tools entstanden?

24.01.2007 - 13:36 Uhr

sieht soweit in ordnung aus...

24.01.2007 - 12:04 Uhr

ist dein addin auch für com registriert? überprüf mal die namen ob die auch bei beidem überein stimmen
bei den registrywerten von excel gibts du ja den namen an unter welche er in der registry die com-klasse findet...

24.01.2007 - 09:50 Uhr

ich schätze mal du wirst und etwas von deinem programmcode zeigen müßen
kann es sein das der fehler auftrat nachdem du eine zeile entfernen wolltest?

23.01.2007 - 17:00 Uhr

hm, gute frage... scheint aber nicht so

was sagt denn microsoft dazu? eventuell mal nach den stichwörtern regsvr32 und innstallutil suchen...

23.01.2007 - 14:43 Uhr

ja fehlen den nnun die registry einträge oder fehlen sie nicht? wen nsie fehlen kan ner sie ja mal hinzufügen...

23.01.2007 - 12:34 Uhr

schon mal nachgesehen ob das addin auch als solches bei excel registriert ist? dazu mla nen blick in die registry werfen. wen nloadbehavior auf 2 steht wurde es durch excel wegen nem fehler deaktiviert. 3 heißt beim starten laden.

23.01.2007 - 11:11 Uhr

ich möchte, dass über eine BATCH-Datei alle DLL-Dateien die sich im gleichen Verzeichnis wie die BATCH-Datei befinden ermittelt werden und dann unter Windows/system32 gelöscht werden...

hm welchen sinn hat das?

23.01.2007 - 09:54 Uhr

Nun aber zum Thema, ich selbst verwende Office 2007 Beta und bei der Version wird Excel nicht korrekt geschlossen wenn vor dem Close und dem ReleaseComObject eine Exception geschmissen wird.

Vielleicht ist dass ja mal ein Ansatz, ansonsten wenn der Code keine Exception auslöst, schließt sich Excel normal, das kann ich von Version 2000, 2003 und 2007 sagen.

würde ich übrigens fast auch meine hand für ins feuer legen das es hier am fehlenden Marshal.ReleaseComObject liegt...

hast du alles was du mit excel machst in einen try... catch... finally bzw try... finally ... eingebetten? im finally müßte dann das Marshall.ReleaseComObject rein...

würde also so aussehen


//deklaration der variablen
Word.Documents oDocs = null;
Word.Document oDoc = null;
try {
    oDocs = oWord.Documents;
    oDoc = oDocs.Add(...);
    ...
} catch (SomeException e) {
    ...
} finally {
    if(oDocs!=null) {
        Marshall.ReleaseComObject(oDocs);
    }
    if(oDoc!=null) {
        Marshall.ReleaseComObject(oDoc);
    }
}

wobei es sich schon fast lohnt den ReleaseComObject - code in eine neue methode auszulagern, der auch auf null vorher überprüft^^

jedenfalls ne menge schreibarbeit... aber damit hab ich jedenfalls nie probleme... solange mir kein anderes addin mein word zerschießt^^

Muss ich vielleicht auch meine ganzen Ranges (mit denen ich die Excel Zellen anspreche) nullen oder freigeben? Sind ja an sich ganz normale Variablen oder sind es auch solche COM Objekte?

jedes objekt einer klasse aus dem word, excel oder office namespace dürfte i.d.r. ein com object sein...

22.01.2007 - 17:03 Uhr

wilslt du denn excel fernsteuern oder die xls datei nur als db mißbrauchen? weil ersteres geht über interop das zweiter über oledb

22.01.2007 - 16:00 Uhr

.Pictures.Insert gibt es bei neueren Office Programmen nicht mehr.
Da mußt du das Ganze über .Shapes.AddPicture machen.

Du solltest auch dann gleich nochmal wegen Marshal.ReleaseComObject hier im Forum suchen. Das kommt auch noch auf dich zu 😉

22.01.2007 - 14:47 Uhr

wie wärs wenn du du mal die betroffene codezeile + eventueller zusätzliche zeilen fürs verständnis auch postest?

offenbar hast du die mehtode ja falsch aufgerufen
hast du die methode auch vom entsprechednen objekt aufgerufen?

22.01.2007 - 10:44 Uhr

Also du könntest es zum Einen als Dienst machen (was wohl die bessere Lösung ist) oder einfach eine WinForms Anwendung in der du kein Fenster anzeigst...

22.01.2007 - 10:34 Uhr

Ich habe vor 2 Jahren mal ein COM-Addin für Word und Excel geschrieben und hatte nur am Anfang Probleme mit nicht wirklich geschlossenen Prozessen.

Nach ein wenig Nachforschung fand ich dann den Hinweis mit Marshal.ReleaseComObject, und seitdem hat ich das Problem nie wieder.

Auf irgendeiner Seite laß ich dann, dass man wirklich jedes Objekt was man direkt oder indirekt nutzt wieder freigeben soll... vielleicht macht ihr genau das nicht?

Direkt heißt dabei z.b.

Word.Application app = new Word.Application();

Indirekt wäre bei

Word.Document doc = app.Documents.Add(...);

das Documents Objekt.

Besser wäre also

Word.Documents docs = app.Documents;
Word.Document doc = docs.Add(...);

Dabei halt immer die Resourcen der Objekte wieder freigeben.
Ich fahr damit seht gut.

Zudem sind mir häufig schlechte Addins untergekommen die selbst wohl nicht ganz sauber programmiert sind und z.b. Word daran hintern die normal.dot am Ende ordentlich zu speichern... (gerade erst wieder durch Acrobat 7.0.0 gehabt, Update auf 7.0.5 hats behoben).

Den Prozess abzuschießen halte ich nicht für eine saubere Lösung. Aber müßt ihr selbst wissen ob ihr das verantworten könnt. Man weiß ja nie ob nicht doch mal ein wichtiges Dokument mit abgeschossen wird.

Vielleicht könnte mir ja jemand beiläufig erklären, wofür das gemacht wird:

Marshal.ReleaseComObject(excelWorksheet);  
Marshal.ReleaseComObject(excelWorkbook);  
Marshal.ReleaseComObject(excelApp);  

Allein durch diese Frage könnt ich dir fast sagen warum dein Programm Probleme hat Excel richtig zu schließen...

Wenn du Objekte von Excel oder Word benutzt, dann sind das COM-Objekte. Diese werden nicht durch den Garbage Collector verwaltet und müßen selbst frei gegeben werden. Das macht man mit der Methode Marshal.ReleaseComObject. Deien explizieten Aufrufe vom GC nutzen also nichts.

Gibst du die Objekte nicht frei wirst du höchstwahrscheinlich einen noch hängenden Prozess haben.

19.01.2007 - 13:48 Uhr

Die Idee ist ganz simpel:

Die ComboBox hat ein Event was immer dann aufgerufen wird wenn du deine Auswahl veränderst: SelectedIndexChanged
D.h. wählst du Stelle 1 aus wird der Event gefeuert, wählst du Stelle 2 aus wird er gefeuert usw.
An dieses hängst du nun einen Eventhandler an.

In diesem Eventhandler holst du die die Kostenstellenummer des gerate ausgewählten Items und machst dann deine Abfrage.
Bein DataAdapter kannst du sicher Paramter mit übergeben... den legst du für den SQL Query fest und setzt den Wert dann mit dem, der in der Liste ausgewählt war.

Was genau verstehst du denn daran nicht?

Infos zu dem DataAdapter findest du hier
http://dev.mysql.com/doc/refman/5.0/en/connector-net-examples.html

18.01.2007 - 16:25 Uhr

also ich greif auf die datei über

webbrowser.Navigate("http://www.pdf.com/nice.pdf");

womit fang ich dann jetzt die übertragung ab?

achja, ich benuttz windowsforms... was sicher nicht unwichtig ist

18.01.2007 - 13:04 Uhr

Original von JAck30lena
warum?

Das SaveAs geht leider nicht, da Document den Wert null hat.

das document hat den wert null wenn es über das acrobat plugin angezeigt wird

17.01.2007 - 17:03 Uhr

Hallo

Folgende Problemstellung:
Es gibt im Netz vom Finanzamt einige Formulare die man online ausfüllen kann.
Da ich etwas automatisieren soll kann ich auf die PDF Versionen nicht zurück greifen.

Also habe ich mir gedacht ich baue eine Anwendung die das Control WebBrowser enthält und fülle damit die Felder aus.
Das klappt soweit ganz gut, allerdings erzeugt mir die Online Druckfunktion ein PDF Dokument was ich aber durch den Webbroswer nicht automatisiert runter laden kann.

Das SaveAs geht leider nicht, da Document den Wert null hat.

Ich habe auch shcon an WebClient gedacht allerdings ist das Problem das diese Seite eine Authentifizierung über ein Cookie macht. Das scheint nur im WebBrowser zur Verfügung zu stehen denn über den WebClient bekomm ich ne 404 Fehlermeldung.

Jemand ne Idee was ich hier machen könnte?

Die Authentifizierung erfolgt automatisch, allerdings auf der ersten Webseite. Von daher muß ich mich da durchhangeln... direkter Aufruf der Formularseite geht leider nicht.

17.01.2007 - 09:50 Uhr

mal % versucht? oder %% ?

16.01.2007 - 10:00 Uhr

was befindet sich denn in zeile 33?

11.01.2007 - 12:37 Uhr

ich meien mich zu erinnern das es mal eine aussage dazu gab die besagt, das der adapter trotzdem erstmal alle daten läd und danach aber nur die ersten 10 zurück gibt... er macht also keine "auswahl" auf seiten der datenbank...

weiß nun nicht ob sich das inzwischen geändert hat.

vielleicht kannst du ja mal die zeit mesen und vergleichen und uns dann drüber informieren ob es wirklich schneller geht.

05.01.2007 - 11:57 Uhr

puh... also ich denke mal wie man ein comaddin schreibt hast du sicher im netz gefunden, und wie man das registriert und die entsprechednen office registry keys einträgt... anscheinend gins ja auch mal, oder?

du kannst ja als bild auch erstmal ein standardbild nehmen

05.01.2007 - 10:31 Uhr

er stellt das glaub ich um wenn es probleme mit dem addin gab

hast du mal ne guid angegeben im konstruktor?

03.01.2007 - 12:55 Uhr

hm dan ngeb mal irgendeine guid an

03.01.2007 - 12:32 Uhr

was genau willst du den nereichen? gibts keinen anderen lösungsansatz? weil ich find das wirklich nicht bis anscheinden ziemlich schwer machbar...

02.01.2007 - 13:30 Uhr

glaub da wirst du nichts finden

02.01.2007 - 11:51 Uhr

hab die implementierung hier gefunden

internal class ImageConverter : System.Windows.Forms.AxHost
{

  public ImageConverter() : base(string.Empty) {} 

  static public stdole.IPictureDisp ImageToPictureDisp(Image image)
  {
    return (stdole.IPictureDisp)GetIPictureDispFromPicture(image);
  } 

  static public stdole.IPictureDisp IconToPictureDisp(Icon icon)
  {
    return ImageToPictureDisp(icon.ToBitmap());
  }
}

also versuch mal dem basiskonstruktor statt null string.Empty mitzugeben 😉

02.01.2007 - 10:52 Uhr

schau dir mal das ereignis WebBrowser.Navigating an

ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.de/CPref17/html/E_System_Windows_Forms_WebBrowser_Navigating.htm

14.12.2006 - 15:19 Uhr

entwickelst du die apis selbst oder sind diese schon fertig?

An Interface hatte ich auch schon gedacht. Mir ist aber nicht klar, wie ich diese Problem damit lösen kann. Wenn ich die APIs als Interface meiner Klasse hinzufüge, müsste ich doch jeden API Aufruf wieder explicit casten, um die Methode aus der richtigen Klasse aufzurufen, oder sehe ich das falsch?

ja das siehst du falsch

du castest sie auf den typen des interfaces und sprichst sie dann darüber an

da beide apis das interface implementiert hätten funktioniert das ohne probleme

frage ist natürlich ob du an den apis noch was ändern kannst...

11.12.2006 - 16:28 Uhr

/edit: Ich hoffe deinen Post richtig interpretiert zu haben: Du hast einen String in dem Beispielsweise "FFFTTTFT" drinnen steht und willst daraus die False/True in ein Bool Array extrahieren.

ist wirklich etwas mißzuverstehen...

herbivores antwort zielt eher darauf ab das ein F die hexzahl 15 darstellt
dahingehend wäre herbs vorgehen richtig

falls f ein falsch darstellt dann paßt egrats =)

16.11.2006 - 16:36 Uhr

Kann es sein das deine Methode statisch ist? .. Aber das erklärt mir noch nicht was die Klasse Console damit zu tun hat..

console ist der namespace seiner anwendung... würd ich mal tippen 😉

kannst du mal den code deiner klasse posten?

laut der fehlermeldung würd ich auch vermuten du hast da ne statische methode gemacht...
statisch heßit, du kannst die methode ohne objekt benutzen... über den klassennamen
dein richTextBox1 ist aber ein attribut von einem objekt darum würde er da schimpfen

16.11.2006 - 16:02 Uhr

Wegen den rechten, das anlegen eines Subkey´s mit einem Wert klappt ja. Ich lege den Subkey in CurrentUser an. Das habe ich dann auch mit dem anderen Code probiert und es ging nicht.

ich nehm einfach mal an das du eventuell keine rechte hast... denn in localmachine kann ma nnur mit adminrechten schreiben

ich hab das gefühl du liest die beiträge nicht richtig... X(

16.11.2006 - 10:53 Uhr

Und Ja, ich hab schon im Forum gesucht, und Ja, ich hab schon F1 gedrückt (das is aber sehr schlecht) und Ja, den freund google hab ich auch benutzt. Aber irgendwie findet man zu dem Thema leider sehr wenig.

ich weiß, die hilfe ist teilweise etwas seltsam, aber z.b. hab ich folgendes bei OpenSubKey gefunden:

Wenn der angeforderte Schlüssel nicht vorhanden ist, wird keine Ausnahme ausgelöst, sondern NULL (Nothing in Visual Basic) zurückgegeben.

Wenn writable true ist, wird der Schlüssel zum Lesen und Schreiben geöffnet, andernfalls wird er nur zum Lesen geöffnet.

in anbetracht von

Folgende Fehlermeldung erscheint: Object reference not set to an instance of an object.

wird wohl beim öffnen ein fehler passiert sein wesshalb dein objekt null enthält

ganz wichtig: schau dir in der hilfe immer an was für fehler oder ausnahmen auftreten können bzw. was rückgabewerte für eine zweite bedeutung haben können
die mußt du dann auch behandeln... das problem hast du z.b. auch immer wenn du mit streams arbeitest
wenn du exceptions abfängst, dan nschluck sie nicht einfach sondern geb ne meldung aus... sonst merkst du nicht ob was schief gelaufen war

also probier mal das hier

RegistryKey FloppyZugriffSchnell = null;
try {
  FloppyZugriffSchnell = Registry.LocalMachine.OpenSubKey
                ("\\SYSTEM\\CurrontControlSet\\Services\\Fdc", true);
  if(FloppyZugriffSchnell == null) {
      Console.WriteLine("Fehler beim öffnen vom RegistryKey");
  } else {
      FloppyZugriffSchnell.SetValue("ForceFIFO", "0");
      Console.WriteLine("Wert erfolgreich eingetragen");
  }
} catch (Exception e) {
    Console.WriteLine("Eine Ausnahme ist aufgetreten:");
    Console.WriteLine(e.Message);
}

ich nehm einfach mal an das du eventuell keine rechte hast... denn in localmachine kann ma nnur mit adminrechten schreiben

Wenn ich

RegistryKey huhu = Registry.CurrentUser.CreateSubKey("TestKey");  

eingebe sollte doch normal im HKEY_CURRENT_USER ein neuer Ordner namens TestKey erscheinen. Ist das so richtig? Denn an diesem bisschen Code kann man ja nichts falsch machen. Aber warum erscheint dieser Key dann nicht?

der code ist grundsätzlich richtig.
fängst du exceptions ab? wenn ja gibst du sie auch aus?
kann nämlich gut sein du darfst und dem root von current_user keinen key anlegen
zudem kann es sein das du keys nur hinzufügen kannst wenn der elternkey auch mit schreibrechten geöffnet ist
auc hier gilt wieder hinweis aus der hilfe:

Ein RegistryKey-Objekt, das den neu erstellten Unterschlüssel darstellt, oder NULL (Nothing in Visual Basic), wenn bei dem Vorgang ein Fehler aufgetreten ist. Wenn eine Zeichenfolge der Länge 0 (null) für subkey angegeben wird, wird das aktuelle RegistryKey-Objekt zurückgegeben.