Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von sheitman
Thema: EXCEL wirklich schliessen
Am im Forum: Office-Technologien

wie oben schon geschrieben war ists nicht besonders gut einfach so den prozess zu killn.letzlich verdeckt man damit nur das man selbst das problem nicht anders in den griff bekommen hat.

falsl du mal ein com-addin entwickelst stehst du eh wieder vor dem selben problem. und da kannst du wirklich nicht einfach den prozess abschießen... und unsaubere addins sind oft das quell so manch einen übels^^

Thema: Fenster schließen? (Aufruf beenden)?!
Am im Forum: GUI: Windows-Forms

dann solltest du vorm schließen mal

_os.RowChanged -= new EventHandler(_os_RowChanged);  
aufrufen

Thema: uint => float
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

google hat die seite hier ausgespuckt =)

http://www.thescripts.com/forum/thread224385.html

Zitat
> but how do I Convert this Byte array back into float?
>
> Their is a method for double :
>
> BitConvert.ToDouble(bytearray)
>
> but this requiers a 8 Byte array. Theirs no BitConvert.ToFloat()


Try BitConverter.ToSingle()

This is a single precision IEEE-754 floating point number (a float in other
words)

Oscar.

Thema: Schrift mit Wix installieren
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

doch, einfach rein kopieren

Thema: [WiX] Ganzes Verzeichnis einpacken?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

ich fürchte da gibts keine lösung.... du könntest dir natürlich ein programm schreiben was die ornder durchgeht und dann dieses xml codefragemtn erstellt, indem es alle ordner rekursiv durchgeht...

als id kannst du ja ne guid nehmen

Thema: Genereller weg Objekte "sicher" nach aussen zu geben.
Am im Forum: Rund um die Programmierung

Zitat
In deinem Vorschlag leitest du von einer Klasse ab und fügst Properties für bestimmte Zugriffe hinzu. In meinem mache ich das prinzipiell genauso, mit einem Unterschied: von aussen ist bei deinen Subklassen nicht klar, dass sie die Eigenschaft überhaupt besitzen, dh bei dir würde (ParentClass)Object.Property nicht funktionieren. und genau diesen Aufruf würde ich ja in der Containerklasse benutzen - dh die Containerklasse macht bei mir einen Aufruf des Interfaces, nicht der konkreten Klasse (das meinte ich mit dem "Comic"). (IMightBeWritable).Object.Property funktioniert naemlich, ohne dass der Aufrufende einen Schimmer haben muss, ob er die Property setzen darf oder nicht.
nein.in meinem vorschlag würde in der abstrakten oberklasse für das property lediglich der rumpf stehen, die implementierung müßte dann in der unterklasse erfolgen...

da ich jetzt nicht genau die syntax von c# in der richtung kenne nicht teeren und federn bitte, ich korrigierdsa morgen

abstract class AbstractObject {
    public abstract string Contact { get; set };
    public string Owner { get {return owner;} }
}

class WriteableChild : AbstractObject {
    public string Contact { get {...}; set {...} };
}

class ReadonlyChild : AbstractObject {
    public string Contact { get {...}; set {...}};
}
nun geht das hier durchaus


AbstractObject o = new ReadonlyChild();
o.Contact = "test"; //da soll dann die exception kommen

vorteil von deinen ist nun, das man im nachhinein noch properties hinzufügen kann, ohne die elternklasse zu verändern... und man kann sie schachteln
das entspricht ja einem pattern, weiß net ob es dsa visitor war

Thema: Genereller weg Objekte "sicher" nach aussen zu geben.
Am im Forum: Rund um die Programmierung

hm, ich finde dann aber dein design etwas fragwürdig...

denn was mir vor schwebte, um den aufwand einzugrenzen, wäre eine abstrakte oberklasse, die alle gemeinsamen implementationen enthält, und subklassen, die dann dieses readonly abdecken... denn genau das machst du ja jetzt auch nur wieder in gewissen sinne... in sofern brauch man keine interfaces...

Thema: Genereller weg Objekte "sicher" nach aussen zu geben.
Am im Forum: Rund um die Programmierung

wie würde das dann bei dem hier vorliegenden fall aussehen?

Thema: Microsoft Word "kastrieren"
Am im Forum: Office-Technologien

vielleicht solltest du mal den debugger bemühen um herauszufinden wo es knallt

zunächst einmal schein man die menüleiste oben nicht ausblenden zu können. zumindest geht es über das word menü nicht. desweiteren kann es sein das du ne exception bekoommst bei menüleisten die garnicht aktiviert sind... (enabled)

du solltest dsa programm dan nauch so schreiben das du dir merkst, welche symbolleisten aktiviert und sichtbar waren und am ende dann den rohzustand wieder herstellen.

zum testen würd ich dir übrigens raten das alles erstmal über vba zu machen, dann sparste auch das ständige neu compilieren^^

wenn dir google und co zuviel ausspucken dann grenz es mehr ein, benutz englische begriffe, benutzt das "+" und such auch mal in den google groups... nur mal so am rande

Thema: Genereller weg Objekte "sicher" nach aussen zu geben.
Am im Forum: Rund um die Programmierung

ausgehend von folgendem post

Zitat
Original von LaTino
So geht's auch, ist aber nicht so flexibel wie Factory.

(ich tipp' das hier nur im Browser, dh keine Pistole auf Richtigkeit/Vollständigkeit)


public Interface IMightBeWriteable 
{
  public string Caption { get; set; }
}

public class Writeable : IMightBeWriteable 
{
  private string _caption;
  public string Caption { get { return _caption; } set { _caption = value; } }
}
public class CertainlyNotWritable : IMightBeWritable
{
  private string _caption;
  public string Caption { get { return _caption; } set { throw new AccessDeniedException(); } }
}

Deine Objekte lieferst du dann wahlweise als Writable oder CertainlyNotWritable. Das haengt vom Aufruf durch das Containerobjekt ab. Dann ist es nur noch (IMightBeWritable)myObject.Caption, und dir ist in dem Moment egal, ob man nun schreiben darf, oder nicht. Letzten Endes ist das aber nix anderes als der Vorschlag in meiner ersten Antwort

LaTino
EDIT: kurzer Nachtrag

wird ja ersichtlich, das man bei interfaces 2 implementierungen gebraucht hätte... Writeable und CertainlyNotWritable
da beide klassen sich nur dadurch unterscheiden das gewisse properties beim set eine exception werfen, würde alles andere gleich sein
daher kam der einwurf mit doppelten aufwand, weil beide klassen ansonten identische properties und methoden etc. haben.

soviel mal als schiedsrichter

Thema: Report Viewer (rdlc) ReportSource at Runtime ändern
Am im Forum: Rund um die Programmierung

Zitat
Fehler bei der lokalen Berichtsverarbeitung.
Die Berichtsdefinition des Berichts 'rmDetail.rdlc' wurde nicht gefunden
würd ich mal vermuten er hat die datei nicht gefunden... pfad überprüfen mit debugger...
Zitat
"Für die DatenDataSet_qmBerichtsdaten-Datenquelle wurde keine Datenquelleninstanz angegeben"
dein Feher liegt hier

rptSource.Name = reportName;
in meinem code

rptSource.Name = "Schlage_Budget_BudgetSollIstData"
bezeichnet Schlage_Budget_BudgetSollIstData den namen der datenquelle die im bericht benutzt wird. (wenn ihc mich recht erinnere^^)

von daher müßte es bei dir so heißen

rptSource.Name = "DatenDataSet_qmBerichtsdaten"

Thema: Report Viewer (rdlc) ReportSource at Runtime ändern
Am im Forum: Rund um die Programmierung

hab nicht viel zeit drum zeig ich dir mal wie ich das gemacht habe als code.
falls noch fragen sind antworte ich morgen dann.


private void LoadBudgetSollIstReport() {
	reportViewer1.Reset();
	ReportDataSource rptSource = new ReportDataSource();
	rptSource.Name = "Schlage_Budget_BudgetSollIstData";
	rptSource.Value = reportBindingSource1;

	reportViewer1.LocalReport.DataSources.Clear();
	reportViewer1.LocalReport.DataSources.Add(rptSource);
	reportViewer1.LocalReport.ReportEmbeddedResource = "Schlage.Budget.BudgetSollIst.rdlc";
	reportViewer1.LocalReport.SetParameters(new ReportParameter[] { m_parameterJahr });

	reportBindingSource1.DataSource = m_BudgetSollIstDataList;            
	reportViewer1.RefreshReport();
}

Thema: mehrdimensionale Array, ArrayList
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

würd sagen schau dir mal mit dem debugger an wie die zeichenkette aussieht die er im ToDouble benutzen möchte...

ansonsten gibt es noch Convert.ToDouble(String, IFormatProvider)

der zweite parameter gibt dabei vor wie der string formatiert ist bzw. wie er mit der formatierung umgehen soll (, oder . als kommazeichen etc.) ... einfach mal in die hilfe schaun

Thema: mehrdimensionale Array, ArrayList
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

um von string nach double zu konvertieren kannst du

double d = Convert.ToDouble("2.3");

du kansnt statt nem dataset auch einfach mit datatable arbeiten

Thema: Bäume Problem
Am im Forum: Rund um die Programmierung

kannst du den baum mal aufmalen den du oben beschreibt?

Thema: SQL Server Compact Edition - Index Problem
Am im Forum: Datentechnologien

geht auch sowas?

select objnr from objaus where barcode like '41%'
Zitat
LIKE (SQL Server Everywhere)

Determines whether a given character string matches a specified pattern. A pattern can include regular characters and wildcard characters. During pattern matching, regular characters must match exactly the characters specified in the character string. Wildcard characters, however, can be matched with arbitrary fragments of the character string. Using wildcard characters makes the LIKE operator more flexible than using the = and != string comparison operators. If any of the arguments are not of a character string data type, Microsoft SQL Server 2005 Everywhere Edition (SQL Server Everywhere) converts them to a character string data type, if possible.

Syntax

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]


Arguments
match_expression
Any valid expression in SQL Server Everywhere of nchar, nvarchar, or ntext data type.

pattern
The pattern to search for in match_expression. It can include the following valid SQL Server Everywhere wildcard characters:

Wildcard character Description Example
%
Any string of zero or more characters.
WHERE title LIKE '%computer%' finds all book titles with the word 'computer' anywhere in the book title.

_ (underscore)
Any single character.
WHERE au_fname LIKE '_ean' finds all four-letter first names that end with ean, such as Dean or Sean.


escape_character
Any valid expression in SQL Server Everywhere of any of the data types of the character string data type category. The escape_character argument has no default and must consist of only one character.

Result Types
bit

Return Value
LIKE returns TRUE if the match_expression matches the specified pattern.

Thema: SQL Server Compact Edition - Index Problem
Am im Forum: Datentechnologien

wie ich schon schrieb, mir war bisher nur bekannt das like bei zeichenketten funktioniert, nicht aber bei int und so... war ic hda bisher einem irrtum verfallen oder liegt hierin das problem das du nichts zurück bekommst?

Thema: SQL Server Compact Edition - Index Problem
Am im Forum: Datentechnologien

ich wußte noch garnicht das like auch auf spalten die vom typ her keine zeichenketten sind funktionieren o.O

Thema: mehrdimensionale Array, ArrayList
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

das problem ebsteht wohl in dem codeabschnitt

List<string> innerListe = new List<string>();
for (int e = 0; e < liste.Count; e++) {
    innerListe = new List<string>();
    for (int i = 0; i < myStringArray.Length; i++) {
        innerListe.Add(myStringArray[i]);
    }
    liste.Add(innerListe);
}

for (int e = 0; e < liste.Count; e++) {
macht ja keinen sinn, da deine liste ja noch leer ist... diese äußere schleife kann imho komplett enfallen

übrig bleibt dann

innerListe = new List<string>();
for (int i = 0; i < myStringArray.Length; i++) {
    innerListe.Add(myStringArray[i]);
}
liste.Add(innerListe);
was funktionieren und ausreichen müßte

komplett würde das also so aussehen


static void Main(string[] args) {
    FileStream stream = new FileStream("c:\\mdaten\\text2klein.txt", FileMode.Open);
    StreamReader objReader = new StreamReader(stream);
    string myString = "";
    string[] myStringArray;
    List<List<string>> liste = new List<List<string>>();
    List<string> innerListe = null;

    while ((myString = objReader.ReadLine()) != null) {
        if (myString.Length > 1) { //SOLLTE DAS NICHT > 0 SEIN UND MIT TRIM()?
             //String wird gesplittet und jeder wert ein einem array gespeichert           
            myStringArray = myString.Trim().Split(new char[]{ ' ', '\n', '\t' });

            innerListe = new List<string>();
            for (int i = 0; i < myStringArray.Length; i++) {
                innerListe.Add(myStringArray[i]);
            }
            liste.Add(innerListe);
        }
    }
}

Thema: mehrdimensionale Array, ArrayList
Am im Forum: Basistechnologien und allgemeine .NET-Klassen


List<List<string>> liste = new List<List<string>>();

List<string> eintrag = new List<string>();
eintrag.Add("Hallo!");
liste.Add(eintrag);

eintrag = new List<string>();
eintrag.Add("Na");
eintrag.Add("wie");
eintrag.Add("gehts?");
liste.Add(eintrag);

foreach(List<string> element in liste) {
    foreach(string s in element) {
        Console.WriteLine("{0} ",s);
    }
    Console.WriteLine();
}

Sollte dann ausgeben

Hallo!
Na wie gehts?

Thema: Universal Software Manager
Am im Forum: Projekte

ok, da hab ich mich wiedermal vertan und bin meiner reschtschreibschwäche auf den leim gegangen... dachte gerade noch paket wird packet geschrieben... das packet ein englisches wort ist hatte ich garnicht bedacht o.O

nun ja, daskind hat ja nun nen neuen namen und ich finde paßt sehr gut =)

Thema: Universal Software Manager
Am im Forum: Projekte

Zitat
PacketAdmin finde ich ist nicht so gut, Packet klingt irgendwie mehr nach Netzwerk. PackageAdmin finde ich da besser.
Das Package das englische Wort für Packet ist weißt du aber, oder?

Fände beide Namen nicht so praktisch.

SoftwareAdmin klingt da schon bissl besser

Thema: Excel97 und .NET
Am im Forum: Office-Technologien

du kannst in word auch addins einbinden die aus einer dot datei bestehen

wenn du ma lauf extras -> vorlagen und addins gehst, siehst du unten eine liste wo diese aufgeführt werden
über buttons kannste auch welche hinzufügen, entfernen etc.

wir haben das hier in der firma auch so realisiert.

im grunde gehst du folgender maßen vor:
du erstellst eine neue dot datei, in der du alle makros rein packst und die symbolleisten über die du deine makros aufrufen möchtest
die datei kannst du dann als addin einbinden... wenn du sie im startup verzeichnis hinterlegst lädt word sie sogar automatisch mit

somit kannst du rel. einfach neue symbolleisten mit neuen funktionen hinzufügen

kommt halt nun drauf an was für funktionen du so anbieten wolltest, denn diese müßtest du hier eben mit vba umsetzen

Thema: Länge eines byte[] bestimmen, den ein Socket schickt
Am im Forum: Netzwerktechnologien

Zitat
Ich hab's jetzt folgendermaßen gemacht:
Anstatt auf die -1 von Read() zu warten, ist die Abbruchbedingung NetworkStream.DataAvailable.
würd ich nicht machen... hatte ich auch so gehabt aber da kam es zu problemen

das problem ist, das du die abfrage machst ob daten verfügbar sind und ein false zurück bekommst, wei lder server noch nicht so weit war um zu senden...

deshalb hab ich auch keine while schleife genommen sondern eine do schleife
das read wartet so lange bis daten ankommen, damit wäre das problem der zeit schon mal gelöst

um nun den deadlock zu verhindern das client und server beide lesen ha bich das dataavailable in di eabbruchbedingung der do...while schleife mit rein gebaut

also ich würds so lassen wie ich es gepostet hab, weil anders gabs bei mir ab und an probleme

nachtrag:
seh gerade das du ja deine alte schleife weiterhin benutzt... hät ich mir die mühe auch sparen können

nagut, mal ne anmerkung zu deiner schleife:
es ist unsinnig mit einem byte array der länge 1 zu arbeiten, weil es auch eine methode gibt die nur das nächste byte ausliest...
dann ist es eh unsinnig byteweise auszulesen, der networkstream hat einen internen lesebuffer von 8kbyte... d.h. du kansnt locker immer ein paar kbyte gleichzeitig abfragen... genau das was ich mit dem buffer gemacht habe

Thema: Länge eines byte[] bestimmen, den ein Socket schickt
Am im Forum: Netzwerktechnologien

hab den code oben nochmal geändert, warn noch paar änderungen drin

also die 1024 bei memorystream bedeutet folgendes

Zitat
Die Anfangsgröße des internen Arrays in Bytes.

buffer, das byte[1024] wird ja immer wieder benutzt
ich lese zeichen in buffer ein, und schreibe diese dann in den memorystream,
dann les ich wieder zeichen in buffer ein und schreib sie wieder in den memory stream, usw.

von daher ist dir größe von buffer unwichtig... deine daten landen erstmal alle im memorystream
mit dem wird dann weiter gearbeitet....

probier es mit einer längern nachrichtaus, wirst sehen es funktioniert...
mach schrittweises durchgehen mit dem debuger und schau dir den inhalt an... oder les mal ein buch für dateioperationen^^

Thema: Länge eines byte[] bestimmen, den ein Socket schickt
Am im Forum: Netzwerktechnologien

die 1024 sind nur für den puffer

die eigentlich nachricht wird zunächst in einem memorystream gespeichert... seine größe wächst dynamisch mit. nach der übertragung wird ja auch der inhalt vom memorystream bentuzt um die nachricht in text wieder umzuwandeln.

nachtrag:
ok, das hang wieder in der schleife, da ein kleiner deadlock vorhanden war...
der server wollte nach dem write sofort daten lesen, während der client aber auch nochmal daten lesen wollte, und read anscheinden nicht abbricht wenn keien daten vorhanden sind.. von daher tut es dieses nun

Client:

//Verbindung zum Server aufbauen
TcpClient client = new TcpClient("localhost", 4711);
//Hole den Stream für's lesen und schreiben
NetworkStream netStream = client.GetStream();
//Puffer für Nachrichtenteile
byte[] buffer = new byte[1024];
//Zwischenspeicher für die Nachricht im byte-Format
MemoryStream memStream = new MemoryStream(buffer.Length);
//Nachricht einlesen und zwischenspeichern
int numRead = 0;
do {
    numRead = netStream.Read(buffer, 0, buffer.Length);
    memStream.Write(buffer, 0, numRead);
} while (numRead > 0 && netStream.DataAvailable);
//Nachricht in String konvertieren
String text = Encoding.ASCII.GetString(memStream.ToArray());
Console.WriteLine("Nachricht vom Server: {0}", text);
//Client Infos an Server schicken
byte[] nachricht = Encoding.ASCII.GetBytes ("Benutzer_Info: " + Convert.ToString(IPAdresse()));
//Sende die Bytes zum Server
netStream.Write(nachricht, 0, nachricht.Length );
//Schließe die Verbindung zum Server
client.Close ();
Console.Write("\t Beenden... [ENTER]");
Console.ReadLine();

Server:

//Setze Flag für "Thread läuft"
this.running = true;
//Hole den Stream für's schreiben
NetworkStream ClientStream = this.TCPClient.GetStream ();
byte[] nachricht = Encoding.ASCII.GetBytes("Hallo");
//Sende die Bytes zum Client
ClientStream.Write(nachricht, 0, nachricht.Length);
ClientStream.Flush();
//Client Infos empfangen
byte[] buffer = new byte[1024];
//Zwischenspeicher für die Nachricht im byte-Format
MemoryStream memStream = new MemoryStream(buffer.Length);
//Nachricht einlesen und zwischenspeichern
int numRead = 0;
do {
    numRead = ClientStream.Read(buffer, 0, buffer.Length);
    memStream.Write(buffer, 0, numRead);
} while (numRead > 0 && ClientStream.DataAvailable);
//Wandle den Inhalt des Byte-Array in ein String um
string stringClientNachricht = Encoding.ASCII.GetString(memStream.ToArray());
//Gib die Nachricht des Servers auf der Console aus
Console.WriteLine(stringClientNachricht);
//Neuen Client mit den Infoes in die ClientListe rein schreiben
ClientListe.Add(stringClientNachricht);			
//Schließe die Verbindung zum Client
this.TCPClient.Close ();
//Setze das Flag "Thread läuft" zurück
this.running = false;

was noch eingebaut werden sollte ist exception management und verwendung von using()

edit:
noch paar fehler entfernt, servercode hinzugefügt

Thema: Länge eines byte[] bestimmen, den ein Socket schickt
Am im Forum: Netzwerktechnologien

kannst du mal irgendwie den vollständigen code posten?
verfolge das jettz shcon ne weile hier mit und frag mich echt wo das problem ist... nicht persönlich nehmen bitte

nachtrag:
probiers mal hiermit

TcpClient client = new TcpClient(...);
NetworkStream netStream = client.GetStream();
byte[] buffer = new byte[1024];

MemoryStream memStream = new MemoryStream(buffer.Length);

int numRead = 0;
do {
    numRead = netStream.Read(buffer, 0, buffer.Length);
    memStream.Write(buffer, 0, numRead);
} while (numRead > 0);
String text = Encoding.ASCII.GetString(memStream.GetBuffer(),0,(int)memStream.Length);

Thema: .bat löscht .xls Files...
Am im Forum: Rund um die Programmierung

hast du deinem chef auch mal borgs bat gezeigt und ihm gesagt das damit das externe programm überflüssig ist?

Thema: Excel97 und .NET
Am im Forum: Office-Technologien

hast du denn mal über lösung eines reinen dot-addins nachgedacht?

Thema: Pdf erstellen mit "iTextSharp"
Am im Forum: Rund um die Programmierung

kannst dir sonst auch mal den report viewer anschaun. der hat eine exportfunktion für pdf. die berichte würden dan nwenigstens auch ordentlich aussehen =)

http://www.gotreportviewer.com/