Laden...

Forenbeiträge von ismirschlecht Ingesamt 45 Beiträge

11.12.2020 - 07:48 Uhr

Hallo,

Ich habe ein Hauptformular und einen als Klasse geschriebenen Controller.
Preisfrage: Wo in der Anwendung instantiiere ich den Controller ?

ism

12.05.2016 - 14:34 Uhr

Könnte unglückliches Design sein.
Trenne Daten (Stringliste) und optische Präsentation (Grid).

  1. Liste lustig füllen, so wie es notwendig ist
  2. Für das Formular mit dem Grid einen Event suchen, der beim "Hervorholen" ausgelöst wird (OnShow ???)
  3. Erst beim Formularanzeigen die Daten ans Grid bilden
  4. Datenbindung beim Verbergen des Formulars lösen
    Grid.datasource = null; oder so

Würde auch sinnlose Hintergrundarbeit verhindern

ism

12.05.2016 - 11:32 Uhr

Hallo,

eine Anfängerfrage: Ich befasse mich zur Zeit mit Fingerprintscannern, wobei es mir NICHT um eine wie auch immer geartete Anmeldung / Authentifikation an Windows geht.
Ziel ist ein Zugangskontrollsystem, bei dem registrierte Kunden "mit ihrem Finger" eintreten, bezahlen usw. können.
Mit in einer DB gespeicherten Kundendaten incl. Fingerabdrücken.
Jetzt liest man, daß das WBF quasi dazu konforme Reader ansprechen kann, und daß man damit seine eigene Anwendung stricken kann.
Geht das wirklich oder würde man doch nur bei einem Logon landen ?
Anforderungen wären in etwa:

  • Aufnahme von Abdrücken und Zuordnung in einer (eigenen) Datenbank
  • Verteilung von Abrücken an mehrere Scanner, wenn der Mustervergleich in den Geräten stattfindet
  • oder Vergleich eines lokal gescannten Fingers mit den zantral gespeicherten Abdrücken

Und natürlich: Reicht da das API von Microsoft oder braucht man noch ein externes SDK ?
Ich weiß, hier im Forum gibt es mehrere threads zu dem Thema, die habe ich schon durch...

Gruß ism

12.05.2016 - 09:45 Uhr

Also ich kann auf Signaturen händeringend verzichten. Da steht oft nur pseudogeistreicher Unsinn.

Und zur Forensoftware: Never touch a running System.
Man hat sich dran gewöhnt, man ist im Forum, um zu arbeiten, man weiß, wie man wo was schnell findet, coole Features müßten schon sehr cool (sprich: nützlich) sein um die Übergangsschwierigkeiten zu rechtfertigen.
Und dann geht es ja wohl nie ganz ohne Datenverluste ab bei solchen Aktionen.

Also von mir ein klares 🙄

Gruß ism

03.05.2016 - 09:33 Uhr

Hallo,

die Dinge haben sich weiterentwickelt.

an Taipi88: Geht klar, deshalb mein erster Ansazu über Delegates (Nowosti() )
Ich dachte eben, Events seien genau das Mittel, das Invoke zu vermeiden.

an LaTino: Äh ja, ich bin am Verstehen. 😎

Der Artikel von Herbivore ist wirklich gut.
Man bleint dran,
ism

02.05.2016 - 16:20 Uhr

Nachdem ersten Versuch über eine eigene Eventklasse wurde ich von der Runtime vollgenölt, Thread A würde in Thread B (GUI) schreiben.
Fazit: Ich mußte mir eine üble Invoke-Konstruktion trotz Events besorgen.
Wo soll nun der Vorteil der Events liegen ?
Da sind Delegaten doch ein wenig einfacher zu verstehen.

Und: Zieht ein Event, der aus einem Thread etwas an der GUI drehen will, zwangsläufig ein Invoke nach sich ?

Gruß ism

02.05.2016 - 09:24 Uhr

Hallo,

danke, das kam mir auch schon in den Sinn.
ism

29.04.2016 - 15:20 Uhr

Hallo,

erstmal zwei Informationen:

  1. Ich arbeite mit VS2010 unter NET4.0
  2. Zu

Jede Serialportinstanz verweist dabei auf den gleichen Eventhandler DataReceived() :
Das heißt einfach nichts anderes als daß ich jedem Serialport den gleichen Datareceived-Handler zuweise. Über "sender" komme ich ja an den Absender ran.

Ist ein Datenpaket erkannt (klappt) übergebe ich die Nutzdaten in ein Hilfsobjekt und starte einen Einmal-Thread (klappt), welcher die spezifische Arbeit erledigt (klappt).

Aber jetzt kommt eine Stelle, bei der ich mich unwohl fühle:
Wie bekommt die GUI eine Rückmeldung vom Thread, sprich seinem Hilfsobjekt ?
Das Hilfsobjekt steckt in einer separat deklarierten Quelldatei und soll vom Hauptformular nichts wissen, ich will das Zeugs je vielleicht weiterverwenden.

Dazu habe ich im Hauptformular einen Delegaten und eine konkrete Instanz definiert:


        public delegate void Nowosti( string nobui);
        public void konkNowosti(string nowui)
            {
            // stelle die Nachricht irgendwo dar
            }

Weiterhin bekommt die Helferklasse den gleichen Delegaten und einen Verweis für ein Besitzer-Objekt:


        public delegate void nowo(String nachri);
        public nowo Nowohandler = null; 
        public object Elter = null;    // das wird das Hauptformular

Im Hauptthread, wo das Hilfsobjekt erstellt wird, weise ich Besitzer (Elter) und Delegat zu:


  // Ka heißt mein Hilfsobjekt
  Ka.Nowohandler = konkNowosti;
  Ka.Elter = this;

... und zum guten Schluß rufe ich im Arbeitsthread den Delegaten auf:


   Nachr = "Es hat geklappt";
   ((Form) this.Elter).Invoke(new nowo(Nowohandler),Nachr);

So, Code zur Kritik freigegeben. Der Compiler hat Ja gesagt, das Programm läuft...

Gruß ism

27.04.2016 - 14:03 Uhr

Hallo,

danke erstmal an alle.
Genug Stoff zum Rumprobieren.

Bis zum Punkt 4 bin ich jetzt gekommen:


public class Einheit : SerialPort
        {
        public Paket P=null;
        public string Bez="";
        public Einheit(string cname, int Baud, Parity party, int Bits, int Plength,   
                            string   _bez)
            : base (cname,Baud,party,Bits)
            {
            this.Bez = _bez;
            this.P = new Paket(Plength);
            }

        }

Diese "Einheit" besitzt ein "Paket", und im Ereignishandler kann ich das über Casting ansprechen:


 private void OnDataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
            {
            Einheit iP= ( (Einheit) sender);
            while (iP.BytesToRead > 0)
                {
                iP.P.Push(  iP.ReadByte()  );
                // Push(int) schiebt das nächste Byte in die 
                // Warteschlange des Paketes
                // hier dann Paketerkennung usw.
                }
       
            }

Bis dahin scheint es mir relativ sauberer Stil zu sein.
Die Weiterverarbeitung (bei erkanntem Paket) würde ich gerne nach dem Motto
"fire and forget" abhandeln, dazu werde ich mir aber wohl noch userdefinierte Events ansehen müssen...
ism

27.04.2016 - 12:06 Uhr

Hallo,

ich stecke bei folgendem Problem fest:

  1. Ich möchte N Serialports erzeugen, initialisieren und starten (geht schon);
    Jede Serialportinstanz verweist dabei auf den gleichen Eventhandler DataReceived()

  2. Die Daten kommen "unvorhersehbar" rein und sind byte - Werte

  3. Jedem Serialport wird eine Datenstruktur mit Namen "Paket" zugeordnet; dieses "Paket" schiebt sequenziell Bytes rein (Schieberegister) und prüft nach jedem neuen Byte, ob ein Paket erkannt wurde (Anfengssequenz, Checksumme). Auch das geht.

  4. Das Problem: Wie gelangen die Bytes aus dem jeweiligen Eventhandler
    KORREKT in ihr zugeordnetes Paket ?
    Ich habe so ein Programm schonmal in Delphi geschrieben und möchte nun Designsünden von vornherein vermeiden.
    Natürlich könnte ich im Tag des Serialports einen Verweis auf das zugeordnete Paket unterbringen, das kommt mir aber sehr dreckig vor...

  5. Wenn 4. erledigt ist: Wie stößt ein erkanntes Paket korrekt die Weiterverarbeitung seiner selbst an ?

Ich will keinen Code sondern eher Strategien, um den Paradigmenwechsel zu NET hinzubekommen.

ism.

EDIT:

Habe gerade festgestellt, daß Serialport gar keinen tag hat.
Also entfällt auch dieser Schleichpfad...
(4.)

23.09.2015 - 08:30 Uhr

Es gibt keine Inputbox ? Echt nicht ?
Aber man könnte sich eine selbst zimmern, auch für spätere projekte.

  1. ein kleines Fenster mit einer Titelzeile, einem Textfeld, einem OK- und Escape-Button
  2. das Fenster erhält zwei Felder: boolean _ok und string _eingabe
    _ok wird gesetzt wenn OK gerückt wurde
    _eingabe enthält den Text (bei OK)
  3. OK und Escape schließen das Minifenster
    4 statische Funktion String Inputbox(...), die ein solches Minifenster instantiiert und das Ergebnis rausreicht

Sollte als Roadmap reichen

Ich hab mir sowas gebastelt und: seeehr nützlich

28.08.2015 - 12:20 Uhr

Die Frage ist ein bißchen zu allgemein.
Was ist "die Mitte" ?
Und wenns mal zwei Kreise sind ? Oder gar Buchstaben ?
Was für Grafiken können das sein ?
Oder gehts eigentlich um den Schwerpunkt ?

04.08.2015 - 10:56 Uhr

Ne eigene Schach - KI ?
Ein Go - Programm ?
Einen kleinen, aber ergonomischen PIM (Personal Information Manager) ?
und und und...

03.08.2015 - 09:27 Uhr

Und weiterhin wäre zu sagen, daß die Menüs in der Control-Collection nicht beachtet werden.
Ich habe aus stackoverflow eine Methode gekupfert, wie auch Menüs und Menüitems rekursiv durchmustert.
Die mußt du zusätzlich zur normalen Controlcollection durchlaufen.

23.07.2015 - 10:00 Uhr

Bist Du Dir sicher, daß Dein Programmdesign gut ist ?
Das hier läuft nämlich auf Scripting hinaus und lohnt sich nur, wenn die Bedingungen wirklich ganz wild von Tag zu Tag wechseln.
Wenn etliche, aber von ihrer Struktur immer gleiche Fälle zu unterscheiden sind würde ich in der INI
a) die vorkommenden Variablenwerte und
b) den konkreten Fall in Form einer Nummer hinterlegen.
Jede Nummer bedeutet eine konkrete Testformel,
Bsp: fall=0 => if A = B
fall= 1 0> if A = B and C = D
usw.
Auswertung erfolgt hardcodiert (und dem Nutzer verborgen) im Programm selbst.
Hätte auch den Vorteil, daß Du nicht Deine eigenen Syntaxfehler in der INI parsen mußt (und es werden welche passieren).

Kommt auch drauf an, wieviel Du von Deinem Gehirnschmalz (die Testformeln nämlich) für Dich behalten willt/mußt.

ism

17.07.2015 - 11:38 Uhr

Was mir aufgefallen ist, gleich im Startbeitrag: Wieso schreibst Du "Führung" in Anführungsstrichen ?
Führt sie oder nicht ? Wenn sie führt hat sie auch die Pflicht und Kompetenz (hoffentlich) Euren "Kulturkampf" zu schlichten.
Und wir aus der Ferne können zu dem was Besser ist, gar nichts sagen.

07.07.2015 - 10:03 Uhr

Da muß ich doch mal dazwischenfragen:
Wieso "sind Arrays nie public" ?
Aus Tradition ? Gibts da gewichtige Gründe, eine derart wichtige Datenstruktur (für Naturwissenschaftler z. Bsp) private zu machen ?
Und wie sieht dann die Übergabe zwischen Klassen aus ?
Ich höre...

09.06.2015 - 16:35 Uhr

Es handelt sich um Delphi 7, und es wird dabei bleiben.
ism

09.06.2015 - 10:41 Uhr

Hallo,

danke für die Antworten.
Das ist hübsch, die falsche Reihenfolge hatte ich nämlich aus dem allwissenden Internätt.
Man lernt nie aus.
Also wäre

    [DllImport("forindll.dll", CallingConvention = CallingConvention.StdCall) ]        
    [return: MarshalAs(UnmanagedType.AnsiBStr)]     // Zeile X
    public static extern int  IO_read_E(  int device);

eine mögliche korrekte Form...
MfG,
ism.

08.06.2015 - 16:15 Uhr

Hallo,

ich muß eine Delphi - Dll ansprechen, d.h. von C# (Visual Studio 2010) aus nutzen.
Die Dll ist erstellt, es handelt sich um eine kleine Sammlung von Funktionen, die nur denkbar einfachste Typen zurückgeben: PChar und integer.

Die Deklaration der externen Funktionen sieht so aus:

       [DllImport("forindll.dll", CallingConvention = CallingConvention.StdCall)]
        public static extern string  IO_anzahl_string();
        [return: MarshalAs(UnmanagedType.AnsiBStr)]     // Zeile X
        
        [DllImport("forindll.dll", CallingConvention = CallingConvention.StdCall) ]
        public static extern int  IO_read_E(  int device);

       [DllImport("forindll.dll", CallingConvention = CallingConvention.StdCall) ]
        public static extern int  IO_read_A( int device);

Bzgl. Mashalling bin ich noch ziemlich unbeleckt.
Folgendes Rätsel: Lasse ich die Zeile X drin werde ich beim Aufruf von
IO_Read_E(...) volgenölt, der Rückgabewert könne nicht gemarshallt werden, und ich müßte mittels [MarshalAs(UnmanagedType.U4)] oder ...I4 vermitteln.
Half selbstredend nichts. Komischerweise finktionierte die NÄCHSTE Funktion in der Aufzählung wieder klaglos (IO_read_A() )
Kommentiere ich Zeile X aus, funktionieren alle Funktionen.
Wie weit wirkt diese [return: ...] Klausel ?
Ist das Auskommentieren überhaupt der Grund fürs Funktionieren von IO_read_E() oder nur Zufall ?
Falls jemand eine Idee hat...

ism

29.05.2015 - 15:54 Uhr

Falls es noch aktuell ist:
Dein Verfahren wird mehrstufig sein müssen um die Datenflut einigermaßen in den Griff zu kriegen.

  1. Kanten suchen und die Farben des Bildes auf 2 reduzieren: schwarz und weiß
  2. Irgendwie erreichen, daß das Gesicht im Bild immer die gleiche relative Größe hat
  3. Prüfen, ob das Gesicht im Bild mit einem Referenzumriß übereinstimmt.
    Dazu brauchst Du die 2dimensionale Kreuzkorrelation, die allerdings sogar sagt, wo das Gesicht ist.
    Na ja, die nächsten fünf Jahre wirst Du keine Langeweile haben.
    Aber bangemachen gilt nicht.
    ism.
17.04.2015 - 13:07 Uhr

Das ist doch kein Widerspruch: Der Reader klabt an einem Windows PC und wird üver VS 2010 programmiert.

17.04.2015 - 11:56 Uhr

Hallo,

folgendes Problem: Ich möchte über einen NFC-fähigen Reader ein NFC - fähiges Smartphone "ansprechen" und es veranlassen, mir seine IMEI mitzuteilen.

Bedingung: Der Handybesitzer muß nur NFC einschalten, er braucht **:::

Gruß ism

08.04.2015 - 11:36 Uhr

Guten Tag,

ich arbeite zur eit an Programmen, die TFTP benutzen, nur clientseitig.
Das findet allerdings in Delphi statt.
Meinem Wissensdurst folgend habe ich versucht, ein Testprogramm in C# zu schreiben.
Zur Anwendung kommt VS 2010 mit NET 4.0.
Ein Hobbyist stellte auf CodeProject auch eine Klasse zur Verfügung, siehe hier:

A simple TFTP client using C#

Das Einbinden ist sehr leicht, nur bekomme ich immer den Fehler > Fehlermeldung:

"Der angegebene Host ist unbekannt".

  1. Der Hostname (IP) wurde richtig übergeben
  2. Zum Einsatz kommt Win 7 32bit
  3. In der Firewall wurde das Programm korrekt eingetragen, es darf also.
  4. In der Konsole funktioniert es (TFTP <host> GET ... )
  5. Ich kann den Host anpingen
  6. Ein anderes, selbstgeschriebenes Delphiprogramm kann den Host auch erreichen.

Hat jemand Erfahrung mit dieser Klasse ? Mehr als "192.192.172.76" unter Host eintragen , der Port ist 69, kann man ja wohl nicht falsch machen ?
Die Klasse enthält auch keine Methode wie Connect() oder Open().
In der Klassenbibliothek von Microsoft scheint jetzt keine dedizierte TFTP - Klasse zu finden zu sein.

Fals jemand was weiß...

08.04.2015 - 11:15 Uhr

Ic h glaube nicht, daß die (meine) ABlehnung von Smartewatches jegliche Weiterentwicklung verneint.
Ich lehne damit DIESE Entwicklung ab, andere finde ich sehr interessant.
Aber schon beim vernetzten Heim habe ich so ein ungutes Gefühl.
Das endet dann damit, daß die Krankenkasse die Inhaltsdaten des Kühlschranks - abgreifbar über die RFID's der vielen Joghurtbecher und Bierbüchsen - haben möchte, um meinen Tarif "maßzuschneidern" - nee danke.
Das mit der Bequemlichkeit stimmt allerdings. Lustigerweise trage ich ne Armbanduhr, WEIL ich bequem bin...

07.04.2015 - 15:32 Uhr

Auch wenn Ihrs für defätistisch haltet: Dinge, die die Welt nicht braucht.
Ein elektronisches Dingsbums, weil der Griff zum Handy schon zu schwer ist ?
Unter der Dusche das Handy fernsteuern, warum auch immer ? Hat die Uhr wenigstens einen Rauschfilter ? Oh sorry...
Unter der Dusche bin ich NICHT ERREICHBAR.
Was wird denn die nächste Neuerung ? Ein Ohrclip, der einem sagt, daß die Smartwatch was zu melden hat, daß das Smartphone was aufgefangen hat...
Schöne neue Welt 😎

16.12.2014 - 15:31 Uhr

Danke für die Antwort.
Die besagte Stelle hatte ich auch gefunden, aber großzügig ignoriert, da das Internet voll von (angeblich) funktionierenden Beispielen ist (was für ein Misthaufen).
Leider bin ich Neuling auf dem Gebiet.
Da werde ich mal meinen eigenen Provider providern (wenn ich weiß, was das ist).

16.12.2014 - 11:51 Uhr

Gibt es in den Informationen über die geöffneten Dateien so etwas wie "Besitzer" ?
Das könntre dann der öffnende Prozess sein.

16.12.2014 - 09:36 Uhr

Hallo,

folgendes Problem:

  • An EINEM Rechner stecken ZWEI USB - Tastaturen.
  • aus betriebsspezifischen Gründen soll jeweils nur eine funktionieren, mit der Möglichkeit, zu wechseln
  • ich versuche, diese Aufgabe mit WMI und der SetPowerState - Methode zu lösen

Die beiden Tastaturen kann ich identifizieren über eine WMI - Abfrage:

select PnPDeviceId from CIM_LogicalDevice where Caption like \"%Tasten%\"


List<ManagementObject> mcl = new List<ManagementObject>();
// ... usw

public void HoleUSB()
        {
         mcl.Clear();
         ManagementObjectSearcher mos = new ManagementObjectSearcher(Fr);
         foreach (ManagementObject mob in mos.Get())
             {
              mcl.Add(mob);
              }
          }

So weit, so gut. in mcl[0] und mcl[1] liegen dann tatsächlich die beiden Managementobjekte, die den Tastaturen entsprechen.
Dann aber gehts nicht weiter. Ich bereite den Aufruf von SetPowerState vor mit einem Objektarray:


Object[] args = new Object[2] {6, DateTime.Now} ;

die 6 entspricht dem PowerOff

Aber dann:


try
                {
                mcl[0].InvokeMethod("SetPowerState",args);
                }
            catch (Exception ex)
                {
                // ist nur eine Fehlerausgabe in einem Memo 
                P.Text+="ERROR"+CR+ex.Message+CR;
                }

Die Fehlermeldung, die IMMER kommt, lautet:> Fehlermeldung:

Der Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig.

Sehr informativ.
Bestimmt nur ein Anfängerfehler, aber ich habe keine Ahnung, in welcher Richtung ich suchen soll.
Ach so: ich arbeite untr Win7 mit VS 2010.

12.09.2014 - 11:45 Uhr

Hallo,

das mit CRViewer.zoom(int32) habe ich erfolglos getestet.
Ich habe jetzt folgende Prothese implementiert:

  • Nach der Anzeige des Berichts wird ein Timer gestartet (200ms).
  • Beim Timerereignis sperrt sich der Timer selbst und addiert einige Pixel zur Fensterbreite / -höhe - schwupps - der Bericht ist zentriert !
    Ich weiß, erbärmlich, aber durch die geringe Verzögerung denkt der User, das gehöre zur Anzeige...
    Also bis jemandem etwas Besseres einfällt lasse ich es so.
    Gruß ism

Update: Wenn der Timer das Reportfenster maximiert siehts sogar noch schöner aus.

12.09.2014 - 11:06 Uhr

Guten Tag,

folgendes Problem:
Ich arbeite an einer "geerbten" Softwarelösung, die auch eine Berichtsvorschau mittels Crystal Reports enthält.
Es gibt einen "alten" Bericht, der in der Vorschau (Komponente: CrystalReportViewer) auch zentriert angezeigt wird. Sein Format A4 hochkant.
Aber bei einem von mir neu entworfenen Bericht passiert Komisches:

  • Der Bericht (A6, quer) wird links oben angezeigt
  • verändert man den Fensterrahmen des enthaltenden Fensters nur ein wenig wird die Ansicht erneuert und die Voransicht ist zentriert - wie es sich gehört.
    Das hätte ich gerne von Vornherein.
    Ich arbeite mit VS2010 und der dazugehörigen CR-Version, 13.0 oder so (Assemblyversionen)
    Ach so: Versuche, die Anzeige aufzufrischen und so ein Zentrieren zu erreichen nutzten nichts.
    Auch die Fenstermaximierung brachte keine Lösung.
    Was kann man noch versuchen ?
11.07.2014 - 17:43 Uhr

Danke erstmal.
Da es ein "geerbtes" Programm ist kann ich die Struktur nicht mehr verändern.
Jetzt habe ich es mit mehreren Bringtofront() gelöst, ist aber ne Prothese.
Gruß ism

11.07.2014 - 12:19 Uhr

Hallo Ihr,

ich arbeite mit VS2010 und habe
folgendes Problem:

  • ich lege ein Formular an und fülle es im Designer mit diversen Panels, von oben nach unten:
    [Titel]
    [Zweig A]
    [Zweig B]
    [Zweig C]
    [Formularfuss]

Die Panels Titel ... Zweig C sind Top-gedockt, der Fuss Bottom-gedockt.
Zu Anfang sind nur Titel und Fuß sichtbar.
Wenn ich jetzt im Programmverlauf zuerst Zweig A und (zeitlich) danach Zweig B sichtbar mache, kann es passieren, daß sich Zweig B an Zweig A vorbeischiebt.
Die Reihenfolge Zweig B ---> Zweig A sichtbar würde die optische Katastrophe beheben, ist aber von der Programmlogik nicht möglich (Nur wer A sagt...)
Hat die IDE hier eine leichte Meise ?
Oder gibts da im OI Eigenschaften, die ich einstellen könnte.
Rummachen in der Dokumentenstruktur bringt nichts, da liegen sie ja richtig.

Gibt es eine Möglichkeit, die Z-Indexe der Panels auszulesen ?
Da Bringtofront() und Sendtoback() ja eine Permutationsbasis bilden könnte ich so jede gewünschte Reihenfolge herstellen - als Notmaßnahme.
ism

(PS: Bin ab morgen erstmal offline)

09.07.2014 - 16:07 Uhr

Falls das Thema noch aktuell ist:
Such mal unter Graphentheorie / Adjazenz- oder Inzidenzmatrix
ism

20.05.2014 - 11:28 Uhr

Hallo,

ja danke erstmal für die Antworten.
Es handelt sich um WinForms.

Vielleicht doch ganz neu entwerfen...
Gruß ism

19.05.2014 - 12:12 Uhr

Hallo,

ich arbeite mit Visual Studio 2010 an einem "geerbten" Programm, dessen Formulare mächtig inhaltsvoll sind.
Leider kann sie der Formulardesigner nie vollständig anzeigen, und auch das Werkzeug "Dokumentenstruktur" ist nicht sonderlich hilfreich.
Vollansicht (Alt-Shift-Enter) ist auch zwecklos.
In den Fenstern scheinen sich zig Panele zu stapeln, die je nach Programmfluß sichtbar werden, über Visible und Dock=Top
Frage: Wie kann ich den Designer dazu bringen, alle Elemente auf dem Form anzuzeigen ?
Bitte keine Diskussionen über den Programmierstil, wie gesagt, ich habe es "geerbt" und muß das Programm dienstlich weiter verschönern.
ism

19.05.2014 - 12:05 Uhr

Hallo,

falls es noch aktuell sein sollte:
Man kann zentrale Bibliotheken, also selbstgeschriebene, in beliebig viele Projekte einbinden, muß dann aber die Quellfiles über Projekt | Hinzufügen... einbinden und
beim Bestätigen den geteilten OK-Knopf des Filedialogs beachten.
"Als Link einbinden" ist hier die erste Wahl, macht die Bibliothek debugbar und verhindert Versionswirrwarr.
(Visual Studio 2010)

25.02.2013 - 13:26 Uhr

Vielleicht solltest Du also wirklich Deine Argumentation noch mal überdenken und über den Tellerrand schauen.

Wenn ich über den Tellerrand schaue, dann in die Richtung, die mir die Arbeit erleichert.
Und ich spreize meine Finger gern für ein paar Klammern. Dann muß sich nämlich bei der Fehlersuche mein Gehirn nicht so spreizen.
Und Einrückung als gestalterisches Element benutze ich seit seligen Turbo-Pascal Zeiten.

Was für Dich grauenhaft ist, ist für die, die es können ein Segen.

Mag sein, aber ich schreibe über meine Meinung.

Es wäre nicht schlecht, wenn man auf abweichende Meinungen nicht so allergisch reagieren würde.

25.02.2013 - 11:19 Uhr

Anscheinend wird funktionale Programmierung wohlwollend mit "mathelastig" und "hochkomplex" gleichgesetzt.
Ich wäre da vorsichtiger.
Nach dem Wenigen, was ich über F# gelesen habe, ist diese Sprache entweder genial oder ein konzeptioneller Vollpfosten.
Zum Beispiel: Gliederung nicht mit Klammern, begin...end etc. sondern per Einrückung ! Ich fühlte mich peinlich an das Lochkartenzeitalter erinnert.
Und kauf Dir nicht das einzige deutschsprachige Buch "F#". Es liest sich grauenhaft.
ism

21.02.2013 - 15:36 Uhr

Ich habe folgendes Problem:
Ich will die "echte" Festplatten-ID auslesen, NICHT die achtstellige hexadezimale Volume SerNo.
Per WMI geht das unter Win 7
sehr gut:
"Select * from Win32_physicalmedia" mit den üblichen ManagementObjectSearchern .
Aber: Unter Win XP (SP3) ist der Eintrag für Serialnumber an FAST allen Rechnern leer. An einem einzigen Laptop (XP, SP3) funktioniert es komischwerweise.
Auf allen Rechnern ist NET 4.0 installiert, auf dem Laptop allerdings auch das Visual Studio 2010.
Was könnte die Ursache sein ? Und natürlich: wie komme ich auch unter XP an die echte SerNo ran ?
Übrigens bringt auch die Abfrage "Select * from Win32_diskdrive" zwar unter Win 7 etwas , nicht aber unter XP .

23.01.2013 - 16:10 Uhr

Kann man das mal in gutem Anfängerdeutsch ausdrücken?

  • Wo kann ich was für ein Script einfügen ?
  • Hat der installer eine eigene Skriptsprache ?
  • Sind Software-Prerequisites eventuell Startbedingungen ?
    ism
23.01.2013 - 16:05 Uhr

Nein, die EXE kommt schön standardmäßig ins eigene Programmverzeichnis C:\Programs\MeineAnwendung.
Es geht hier um gemeinsame Datendateien, die das Programm in
C:\ProgramData\MeinAnwendungsdatenpfad ablegen muß.
Und da ich dieses (fremde) Meisterwerk beruflich übernommen hab, habe ich erstmal keinen Bock, da wild rumzuändern.
Im Übrigen wird beim Installer alles Mögliche, nur nicht ProgramData angeboten.

Also mach ichs beim ersten Starten der EXE im Programm selbst: Verzeichnis anlegen, Daten reinkopieren, fertsch. Unelegant, aber schnell.
ism

23.01.2013 - 09:44 Uhr

c:\ProgramData ist übrigens CommonApplicationData, dein Benutzerprofilordner ist wo anders.

Das wäre ja auch mein Ziel. Es geht definitiv um C:\ProgramData
Leider wird dieser symbolische Ordner [CommonApplicationData] vom Installer nicht angeboten.
Die Einrichtung eines "benutzerdefinierten Ordners", dem ich trickreich die DefaultLocation [CommonApplicationData] ( inklusive der gewünschten Unterordner) verpaßt habe, wird auch nicht beachtet.
ism

22.01.2013 - 16:15 Uhr

Der Titel sagt ja schon Einiges: Mein Setupprojekt muß etliche Order anlegen, samt Unterordnern + Dateien.
Ich arbeite unter Win 7, wo der symbolische Order ProgramData heißt.
Übersetze ich das Setupprojekt, geht die Sache gut, wenn auch mit Kommentaren à la "Im Benutzerprofilordner installiert man nicht..."
Da ich die Arbeit an einem fremden Programm aber fortsetze habe ich keine Wahl: Die Ordner samt Inhalt müssen dort installiert werden.
Führe ich die setup.exe als Admin aus, gleiches Ergebnis.
Die Ordner (nebst Inhalt) werden nicht angelegt, Fehlermeldungen gibts keine.
Liegts an Windows ?
IDE: Visual Studio 2010 Prof.

ism

22.01.2013 - 11:27 Uhr

Hallo,

ich arbeite mit Visual Studio 2010 (Vollversion) und muß ein Installationsprogramm erstellen.
Bis zu den benutzerdefinierten Aktionen habe ich mich durchgearbeitet, aber jetzt wirds schwierig: Das Installationsprogramm soll zum krönenden Abschluß drei MSI-Dateien ausführen (Datenbankzeugs), *.msi läßt sich aber im Editor nicht hinzufügen

Kein gültiger Dateityp für eine benutzerdefinierte Aktion.

Wie kriege ich die MSI's doch noch rein ?
ism

(PS: Bin Anfänger, alles soz. zum ersten Mal)