Laden...

Forenbeiträge von Section31 Ingesamt 64 Beiträge

16.04.2015 - 09:34 Uhr

Hallo,

hast du auf das Setupprogramm Einfluss? Dann prüf da, ob der Nutzer installieren darf oder nicht.

Andernfalls wird es fast unmöglich den Anwender (zumal alle Administratoren auf ihren Rechnern sind) diese davon abzuhalten etwas zu installieren. Selbst mit Berechtigungen auf die entsprechenden Verzeichnisse wirst du nicht weit kommen, denn dann "besorgt" man es sich eben von einem Kollegen, der Zugriff hat. Und alles was du lokal installierst auf dem Rechner der Nutzer kann dieser ja auch wieder (Adminrechten sei dank) deinstallieren.

Grüße
Maik

09.02.2015 - 10:19 Uhr

Ich geb mal einen noch etwas genaueren Hinweis.

Lies dir mal Random.Next-Methode durch und schau mal, wie du die Next-Methode verwendest, dann sollte dir ganz schnell klar, warum du irgendwann nur noch die Eins bekommst.

Grüße
Maik

24.11.2014 - 14:24 Uhr

Hallo,

bist du auch sicher, dass Visual Studio dein Programm neu übersetzt hat? Kann nämlich sein, dass irgendwo ein Fehler ist, dann wird nämlich u. U. der letzte lauffähig Stand gestartet.

Gruß
Maik

02.10.2014 - 10:30 Uhr

Hallo Tom,

schau mal mit dem http://www.dependencywalker.com/ nach, was die DLL überhaupt exportiert.

Gruß
Maik

17.09.2014 - 13:56 Uhr

Hallo Merti_berg,

wenn es um größere Datenmengen geht, kann sich auch mal ein Blick auf das HDF5-Format lohnen http://www.hdfgroup.org/. Da kann man so ziemlich alles Speichern, auch Kompression wird unterstützt.

Grüße
Maik

07.08.2013 - 11:07 Uhr

Hallo,

ich denke mal, der Abschnitt


    int s = frames / (int)fps;
    int sRest = s % 60;
    int minutes = ((s - sRest) / 60) % 60;
    int hours = (100 - minutes) / 60;

in der Funktion CalculateDuration müsste eher wie folgt lauten:


    int s = frames / (int)fps;
    int sRest = s % 60;
    int minutes = (s / 60) % 60;
    int hours = s / 3600;

Grüße
Maik

28.05.2013 - 15:45 Uhr

Ich glaube, du hast da etwas falsch verstanden oder ich mich nicht richtig ausgedrückt.

Die Befehle move und rename machen schon das, was du möchtest, aber in den Logs des Repositories wird immer ein delete für den alten und ein add für den neuen Namen stehen.

Es wäre, als würde man zuerst z. B. die alte Datei an einen neuen Ort kopieren und diese dann löschen, jedoch mit dem Nachteil, dass in diesem Falle die History verloren geht.

28.05.2013 - 14:58 Uhr

Es gibt bei SVN kein explizites MOVE-Kommando. Es wird intern immer über ein Add und Delete gelöst

http://svnbook.spears.at/nightly/de/svn.ref.svn.c.move.html

25.02.2013 - 14:35 Uhr

Hallo Stephan,

erst einmal ist ",".ToString(); Blödsinn, weil "," ja bereits schon ein String ist.

Und das was du suchst ist die Eigenschaft SelectionAlignment.

Gruß
Maik

07.02.2013 - 09:10 Uhr

Hallo Patrick,

gibt dem Namespace http://schemas.datacontract.org/2004/07/Company.Server.Contracts.Config einfach einen beliebigen Namen. Dann sollte es etwa wie folgt funktionieren

XmlDocument xDoc = new XmlDocument();
xDoc.Load(xmlFile);

XmlNamespaceManager mgr = new XmlNamespaceManager(xDoc.NameTable);
mgr.AddNamespace("xmlns:i", "http://www.w3.org/2001/XMLSchema-instance");
mgr.AddNamespace("NameSpace", "http://schemas.datacontract.org/2004/07/Company.Server.Contracts.Config");

string path = "/./NameSpace:Stammdaten/NameSpace:Names/NameSpace:Name";
XmlNodeList xnList = xDoc.SelectNodes(path, mgr); // --> xnList.Count != 0
foreach (XmlNode xn in xnList)
{
    string firstName = xn["FirstName"].InnerText;
    string lastName = xn["LastName"].InnerText;
    Console.WriteLine("Name: {0} {1}", firstName, lastName);
}

19.09.2012 - 14:43 Uhr

Für große Datenmengen gäbe es auch noch HDF

24.08.2012 - 09:43 Uhr

Hallo,

ich hatte bei einem Projekt auch dieses Problem, dass offenbar das KeyDown-Event nicht zuverlässig gefeuert wird.

Bei mir hat dann folgendes geholfen


        protected override bool ProcessDialogKey(Keys keyData)
        {
            if (keyData == Keys.Delete)
            {
                // Aktion
            }

            return base.ProcessDialogKey(keyData);
        }

Du musst dann allerdings prüfen, ob dein Listview gerade aktiv ist, weil du für das gesamte Fenster die KeyDown-Events abfängst.

Gruß
Maik

11.07.2011 - 10:06 Uhr

Hallo,

über einen kleinen Umweg wäre es evtl. Möglich. Schau dir mal com0com an. Damit kannst du virtuelle COM-Ports einrichten. In deinem Programm könntest du nun alle Daten, die an das andere Programm gehen sollen auf diesen virtuellen COM-Port ausgeben und das andere Programm kann sie einlesen.

Gruß
Maik

30.07.2010 - 14:07 Uhr

Hallo,

ich würde evtl. die Variable sContent nicht als string, sondern als StringBuilder deklarieren. Im [Artikel] Performant Strings verketten sind einmal die verschiedenen Möglichkeiten Strings zu verketteten gegenüber gestellt. Du machst an zwei Stellen innerhalb von for-Schleifen ein

sContent += string

und das ist doch sehr unperformant.

Grüße
Maik

10.04.2010 - 19:17 Uhr

Hallo,

du kannst die Zuweisung noch weiter vereinfachen, in dem du das Convert.ToByte weg lässt, denn es ist an der Stelle unnötig, denn die Werte sind ja schon Byte-Werte.

Gruß

01.04.2010 - 16:30 Uhr

Hi,

schau mal, ob unter

Tools -> Options

Hier dann das Häckchen bei "Show all settings setzen"

Und dann unter

Projects and Solutions -> General

ein Häckchen bei "Show advanced build configurations" gesetzt ist. Nu dann kannst du in der Express-Version auch zwischen Debug und Release wechseln.

Grüße

13.01.2010 - 15:30 Uhr

Hi,

schau mal in diesem Beitrag [gelöst] SVN: Letztes Changeset löschen wurde das Thema schon mal diskutiert. Es gibt eine Möglichkeit (Export Repo und Import). Aber per default ist ein nicht vorgesehen in Subversion eine Revision zu löschen.

Grüße

28.11.2009 - 20:10 Uhr

Hallo,

du könntest aber auch direkt


Process.Start(@"C:\ping.bat");

aufrufen.

Grüße

04.11.2009 - 09:57 Uhr

Hallo #coder#,

muss es unbedingt ein Server und auch Online sein, denn für privat reicht es ja meist auch, wenn man lokal ein eigenes Repository anlegt, ganz ohne Server.

Grüße

14.10.2009 - 10:43 Uhr

Hallo,

schau dir doch auch mal die BitVector32-Struktur an: http://msdn.microsoft.com/de-de/library/system.collections.specialized.bitvector32%28VS.80%29.aspx
Damit kann man meiner Meinung nach wesentlich einfacher auf solche Strukturen zugreifen.

Ich hab mir die für ein anderes Projekt auch schon mal auf 64-Bit erweitert. Bei Bedarf kann ich das ganze hier auch mal posten.

Grüße

27.09.2009 - 07:09 Uhr

Hallo

Ich würde eine asymmetrisch verschlüsselte Datei verwenden. Den dazugehörigen öffentlichen Schlüssel legst du mit in deinem Programm ab (als Resource) und mit Hilfe des privaten Schlüssels (Natürlich schön sicher aufbewahren) erzeugst du nun entsprechende Lizenzen. So kann zwar jeder jederzeit die Lizenzdatei auslesen, aber halt keine neue generieren. Wie du die unverschlüsselte Datei aufbaust ist dann dir überlassen z. B. halt Benutzername, Firma, Kaufdatum, ... als XML, Text oder binär.
Und dann wie gesagt, ist sie nicht vorhanden oder ungültig -> Demo, wenn gültig -> alles frei.

Wichtig ist allerdings dann auch, dass du deine Anwendung durch einen guten Obfuscator schickst, damit erschwerst du, dass jemand deinen Programmcode einsehen kann. Dazu auch [FAQ] .net Assembly vor Disassembling schützen (Obfuscator)

Grüße

26.09.2009 - 20:41 Uhr

Hallo,

also ich würde die Eingabe eines Schlüssels bei der Installation weg lassen. Verwende lieber eine Lizenz-Datei. Ist keine vorhanden oder sind die Informationen ungültig, läuft das ganze im Demo-Modus. Ist es vorhanden werden alle Funktionen frei gegeben. Zusätzliche würde ich die Lizenzinformationen irgendwo an prominenter Stelle einblenden, z. B. wenn dein Programm die Möglichkeit bietet Daten zu drucken, einfach dort den Lizenznehmer mit angeben. Sowas schützt meistens auch recht effektiv gegen die Weitergabe der Lizenz, zumindest im Geschäftsumfeld. Im privaten Umfeld wirst du sowas nie ganz verhindern können.

Ansonsten einfach mal ein paar Links, denn das Thema wurde schon sehr oft angesprochen, wie man sowas realisieren kann:
Aktivierungsmanager selbst programmieren
Aktivierungsschlüssel oder nicht?

Und zu .Net Reactor einfach mal hier lesen Erfahrung mit .NET Reactor?
Der Shareware-Schutz beruht nämlich einzig und allein auf der Verschlüsselung und die ist erschreckend einfach zu entfernen, wenn man sich ein wenig näher damit beschäftigt.

Grüße

12.09.2009 - 15:10 Uhr

Hallo,

ändere mal die do-while-Schleife in


while ((p%t != 0) && (t*t < p))

Denn die Schleife soll ja solange wiederholt werden, wie kein Rest entsteht und der Teiler kleiner als die Wurzel der aktuellen Zahl ist.

Des weiteren die auch die nachfolgende if-Abfrage entsprechend anpassen


if((t * t > p) && (p % t != 0))

Denn die Zahl ist ja nur dann prim, wenn ein Rest != 0 aufgetreten ist und der Teiler größer ist als die Wurzel der Zahl.
Und hier liegt auch dein Problem mit der 15. Die do-while-Schleife hat nämlich bei t = 5 abgebrochen und da 5*5 = 25 > 15 ist war die if-Bedingung erfüllt und er hat das ganze als Primzahl ausgegeben.

Allerdings musst du nach den Änderungen noch einen Sonderfall, neben der 2, behandeln, nämlich die 3, aber da kommst du bestimmt von selbst drauf, wo uns wie 😁

Grüße

31.08.2009 - 15:54 Uhr

Hallo Pascal,

ab Version 1.6 von SVN sollte das gehen, es gibt aber Einschränkungen. Ansonsten gehen nur komplette Verzeichnisse. Siehe auch http://tortoisesvn.net/docs/release/TortoiseSVN_de/tsvn-dug-externals.html

Grüße

14.08.2009 - 07:55 Uhr

Hallo Rocket,

du kannst dir ja auch mal diese Komponente ansehen http://www.digitalrune.com/Products/TextEditorControl/Overview/tabid/597/Default.aspx

Syntax Highlighting für C# ist sogar schon implementiert und für VB Script und SQL sollte es nicht so schwer sein das ganze anzupassen.

Grüße

06.08.2009 - 09:47 Uhr

Hallo,

man kann die letzte Version aber auch komplett entfernen.

In der Kommandozeile folgendes ausführen, um das Repository zu exportieren und zwar nur bis zur vorletzten Versionsnummer.


svnadmin dump "Archivpfad" -r 0:"Vorletzte Revisionsnummer" > dumpfile

Dann ein neues Repository anlegen und mit


svnadmin load "Pfad zum neuen Archiv" < dumpfile

Man muss zwar dann das Projekt komplett neu auschecken, aber die letzte ungewollte Revision fehlt.

Ich geb zu, ist zwar etwas umständlich und dauert bei großen Repositories entsprechend, aber es funktioniert.

Grüße

05.08.2009 - 13:46 Uhr

Hi,

versuchs mal so:


// Funktionen für DLL-Zugriff
[DllImport("kernel32.dll")]
static extern int GetProcAddress(uint libraryHandle, string functionName);
[DllImport("kernel32.dll")]
static extern uint LoadLibrary(string libraryName);
[DllImport("kernel32.dll")]
static extern int FreeLibrary(uint libraryHandle);

// Delegat für die Funktion
public delegate void FunctionDelegate();

// Funktionspointer auf die Funktion
[MarshalAs(UnmanagedType.FunctionPtr)]
public FunctionDelegate Function;

// DLL-Handle holen
UInt32 libraryHandle = LoadLibrary("DLL.dll");


// Funktionspointer holen
functionPointer = (IntPtr)GetProcAddress(libraryHandle, "Function");
// Funktionspointer zuweisen
Function = Marshal.GetDelegateForFunctionPointer(functionPointer, typeof(FunctionDelegate)) as FunctionDelegate;

// DLL wieder frei geben
FreeLibrary(libraryHandle);

Grüße

21.07.2009 - 14:54 Uhr

Hallo,

für Datamatrix Barcode kann ich noch http://sourceforge.net/projects/iec16022sharp/ empfehlen.

Grüße

08.07.2009 - 13:08 Uhr

Hi,

schau mal, ob unter

Tools -> Options

Hier dann das Häckchen bei "Show all settings setzen"

Und dann unter

Projects and Solutions -> General

ein Häckchen bei "Show advanced build configurations" gesetzt ist. Nu dann kannst du in der Express-Version auch zwischen Debug und Release wechseln.

15.06.2009 - 13:24 Uhr

Tools / Options

-> Projects and Solutions / Build and Run / On run, when build or deployment errors occur -> Prompt to launch

12.06.2009 - 10:35 Uhr

Hallo,

Klingt so, als hättest du die Express-Edition. Hier muss man die verschiedenen Build-Einstellungen erst "frei schalten" und zwar

Tools -> Options

Hier dann das Häckchen bei "Show all settings setzen"

Und dann unter

Projects and Solutions -> General

ein Häckchen bei "Show advanced build configurations" setzen und schon kannst du auch zwischen Debug und Release wechseln.

04.06.2009 - 15:10 Uhr

Hallo,

oder auch


string apppath = System.IO.Path.Combine(Application.StartupPath, "database.mdb");

Dabei wird der Backslash automatisch auch gleich richtig gesetzt.

Grüße

29.05.2009 - 14:02 Uhr

Setzt du die Variable in einer extra DOS-Box? Dann könnte schon hier das Problem liegen. Umgebungsvariablen die hier mit set gesetzt werden gelten nur in dieser Box und auch nur so lange, bis diese Box geschlossen wird. Setz diese doch mal in Systemeigenschaften -> Erweitert -> Umgebungsvariablen. Da sollte es dann gehen.

10.05.2009 - 09:03 Uhr

Hallo herbivore,

ich weis, aber c#-timmey hat ja die Header-Datei, deswegen ja auch meine (ich gebe zu eher indirekte) Frage nach den Deklarationen zu den einzelnen Funktionen.

10.05.2009 - 08:10 Uhr

Der Tipp mit depends.exe ist schon mal gut. Aber es wäre dann auch interessant, wie die Deklarationen zu den einzelnen Funktionen in der Header-Datei aussehen.

09.05.2009 - 16:59 Uhr

Hallo,

schau mal nach meinem Beitrag in Mit importierter C++ DLL eine C#-Funktion aufrufen?
Da habe ich einmal kurz beschrieben, wie man eine Callbackfunktion aufrufen kann.

Dein Ansatz mit SetCallback war da eigentlich schon auf dem richtigen Weg.

09.05.2009 - 15:40 Uhr

Ich tippe mal drauf, dass SetCallback die Callbackfunktion in der DLL registriert.

Ist allerdings immer noch die Frage c#-timmey, womit du bei der Callbackfunktion nicht weiter kommst?

05.05.2009 - 13:33 Uhr

Hallo,

noch ein kleiner Hinweis. Dateien sicher zu löschen, in dem man sie überschreibt, funktioniert nur zuverlässig bei normalen Festplatten. Bei SSDs, USB-Sticks usw. kann es sein, dass diese Methode nicht mehr zuverlässig funktioniert. Hier macht dir mit hoher Wahrscheinlichkeit das Wearleveling einen Strich durch die Rechnung, siehe auch http://de.wikipedia.org/wiki/Solid_State_Drive#Sicheres_L.C3.B6schen_und_Defragmentierung

29.04.2009 - 15:20 Uhr

Hi,

meinst du vielleicht sowas hier: Mit importierter C++ DLL eine C#-Funktion aufrufen?

Grüße

17.03.2009 - 15:16 Uhr

Hallo mad220681,

versuch es mal mit

mykey.SetValue("", _path + "\\ChartViewer.exe %1");

Grüße
Maik

16.03.2009 - 13:51 Uhr

Hallo TheProg,

hier noch eine kleine Erklärung, was die einzelnen Symbole bedeuten

http://tortoisesvn.net/docs/release/TortoiseSVN_de/tsvn-dug.html#tsvn-dug-general-icons

16.03.2009 - 08:46 Uhr

Schonmal nen Lock auf eine Datei gesetzt? Das würde mir gerade einfallen (ist aber ungetestet). Ich denke nicht, das du in dem Repository Schreibrechte hast. Dann könntest du die lock Funktion "missbrauchen".

Ein Lock wird ihm auch nur nicht weiter helfen, wenn er keine Schreibrechte auf dem Repository hat. Denn die Locks werden genau dort gespeichert.

ja mein problem ist nur, dass wenn ich was an den Dateien änder werden sie mit so nem roten ausrufezeichen markiert und bei nächsten update neu heruntergeladen.

Das rote Ausrufezeichen bei Tortoise zeigt an, dass an der entsprechenden Datei etwas geändert wurde. Aktualisiert man nun diese Datei mit einer neuen Version aus dem Repository so versucht SVN/Tortoise diese zusammen zu mergen. Wenn das funktioniert, so hat man die neue Version inklusive der eigenen Änderungen. Es kann aber auch vorkommen, dass beide Dateien nicht automatisch gemergt werden können, dann kommt es zu Konflikten und diese muss man selbst beseitigen.

Gibt es da vl. ne einstellung damit man das abstellen kann?

Nein, man kann es nicht abstellen. Du kannst allerdings jede Datei/jedes Verzeichnis einzeln updaten und die von dir geänderten Dateien aussparen. Aber ich denk mal nicht, dass es praktikabel ist.

des versteh ich net wie

und du Tortoise benutzt, hast Du schon das Patcherstellen da drin.

wie kann ich die jetzt erstellen?

Rechtsklick ins Verzeichnis, da dann TortoiseSVN -> Create Patch (Erzeuge Patch). Dann kannst du alle Dateien anwählen, die in den Patch mit aufgenommen werden sollen und anschließend kannst du das ganze in einer Datei speichern. Und nach dem aktualisieren das ganze wieder andersherum TortoiseSVN -> Apply Patch (Patch anwenden)

05.03.2009 - 11:32 Uhr

Hallo,

du könntest das ganze höchstens (wenn es geht) in das KeyDown-Event verschieben, hier geht dann folgendes:

if(e.Modifiers == Keys.Control && e.KeyCode == Keys.F)
{
28.02.2009 - 17:24 Uhr

Hallo Iceevil,

ließ dir mal die FAQ dazu durch [FAQ] .net Assembly vor Disassembling schützen (Obfuscator)

Letztendlich aber kann man zusammenfassen, es bringt nichts, denn in dem Moment, wo das Programm gestartet wird, muss es auch entschlüsselt werden und schon ist die Verschlüsselung dahin. Ich hatte zum Beispiel auch an Anfang gedacht, dass .Net Reactor von http://www.eziriz.com ein Programm gut sichern kann, bis ich na ein wenig Recherche im Netz gesehen hab, wie schnell man diesen "Schutz" umgehen kann.

Grüße
Maik

16.02.2009 - 08:03 Uhr

Hallo Matthias,

womit serialisierst du denn? Mit BinaryFormatter oder XmlSerializer oder SoapFormatter? Denn die Art kann auch eine Rolle spielen, wie groß letztendlich die gespeicherten Dateien sind.

Grüße
Maik

15.02.2009 - 08:34 Uhr

Hallo buwa,

du musst natürlich noch einen entsprechenden Tab hinzufügen (siehe Tabs in Word einfügen).

Mit

myWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;

bzw.

myWordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;

formatierst du lediglich die Ausrichtung des Textes in der aktuellen Zeile, nicht aber die Ausrichtung an den Tabs.

Grüße
Maik