Laden...

Forenbeiträge von theSoulT Ingesamt 64 Beiträge

08.03.2019 - 17:02 Uhr

Servus und danke erstmal für deinen Vorschlag.
Das Problem ist nur das es in jeder Zeile überprüft werden soll. Und damit hab ich meine Probleme 😭

08.03.2019 - 14:30 Uhr

Mein Problem ist folgendes:
ich müsste Zeile für Zeile kontrollieren, ob mehr als 72 Zeichen stehen. Wenn ja dann sollen alle worte über 72 in die nächste Zeile geschrieben werden.

Ich hätte das jetzt mit foreach(string lines in TextBox1.Lines) gemacht.
Allerdings ist hier das Problem das ich dann lines nichts zuweisen kann.

            
 private void textBox1_TextChanged(object sender, EventArgs e)
        {
         foreach (string lines in textBox1.Lines)
            {
                string[] zeile = lines.Split();
                char[] buchstaben = lines.ToCharArray();
                int count = 0;
                int lastWord = 0;

                if (buchstaben.Length > maxCount)
                {
                    for (int i = 0; i < zeile.Length; i++)
                    {
                        if (count < maxCount)
                        {
                            count += zeile[i].Length;
                        }
                        else
                        {
                            lastWord = i;
                            break;
                        }
                    }
                    for(int i = 0; i < lastWord; i++)
                    {
                        gesamttext += zeile[i] + " ";
                    }
                    gesamttext += Environment.NewLine;
                    for(int i = lastWord; i < zeile.Length; i++)
                    {
                        gesamttext += zeile[i] + " ";
                    }
                    textBox1.Text = gesamttext;
                }
            }
        }

Das hier ist mein aktueller Versuch, aber das klappt leider auch nicht so ganz 😦

08.03.2019 - 13:35 Uhr

Hallo zusammen,

ich benötige mal wieder eure Hilfe,
ich komme einfach nicht weiter. Für ein Projekt benötige ich einen automatischen Zeilenumbruch. Das heißt ich schreibe in einer Multiline-TextBox meinen Text. Es sollen in jeder Zeile maximal 72 Zeichen stehen. Das heißt wenn ein Wort bei 70 anfängt und über 72 geht soll das ganze Wort in die nächste Zeile geschrieben werden. Leider bekomme ich das nicht hin. Habt ihr da einen Ansatz? Oder gibt es für TextBoxen schon Einstellungsmöglichkeiten für die maximale Anzahl pro Zeile?

22.01.2019 - 21:01 Uhr

ist zwar unwahrscheinlich, aber ist das ein frisch installierter SAP GUI 7.50? Dann könnte einmal neustarten ausreichen. Das Ding hat nach der Installation ein paar Grafikfehler, die nach dem Neustart aber weg sind.

Servus GarlandGreene,

nein ist nicht neu installiert 😁
Wenn ich SAP normal starte, ist die Ansicht auch normal.
Das muss an dem Code liegen 😭

22.01.2019 - 17:32 Uhr

Du hast eine Konsolenapplikation erstellt, und darin läuft dann keine Nachrichtenbearbeitungsschleife (message queue).
Probiere mal z.B. eine WinForms-Applikation.

Habe ich auch schon versucht, leider ohne Erfolg. Echt ärgerlich 😭

22.01.2019 - 16:42 Uhr

Hallo zusammen,
ich bin grade dabei eine Verbindung von einer Userform ins SAP zu erstellen.
Mit meinem momentanen Code bekomme ich auch eine Verbindung, allerdings ist das SAP Fenster in einer komischen Ansicht (Buttons werden zum Beispiel nicht angezeigt) Siehe Screenshot. Weiß jemand woran das liegt?
Hier meine Main:

public static void Main(string[] args)
        {
            SAPActive.openSAP("R3Q ECC Testsystem EHP8");
            SAPActive.login("001", "user", "pw", "DE");
            SAPActive.SapSession.StartTransaction("CS12");
        }

Dazu die zwei Funktionen:

       public static void login(string myclient, string mylogin, string mypass, string mylang)
        {
            GuiTextField client = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-MANDT", "GuiTextField");
            GuiTextField login = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-BNAME", "GuiTextField");
            GuiTextField pass = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-BCODE", "GuiPasswordField");
            GuiTextField language = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-LANGU", "GuiTextField");
    
            client.SetFocus();
            client.Text = myclient;
            login.SetFocus();
            login.Text = mylogin;
            pass.SetFocus();
            pass.Text = mypass;
            language.SetFocus();
            language.Text = mylang;
    
            //Press the green checkmark button which is about the same as the enter key 
            GuiButton btn = (GuiButton)SapSession.FindById("/app/con[0]/ses[0]/wnd[0]/tbar[0]/btn[0]");
            btn.SetFocus();
            btn.Press();
    
        }

        public static void openSAP(string env)
        {
            SAPActive.SapGuiApp = new GuiApplication();
            string connectString = null;
            if (env.ToUpper().Equals("DEFAULT"))
            {
                connectString = "R3Q ECC Testsystem EHP8";
            }
            else
            {
                connectString = env;
            }
            SAPActive.SapConnection = SAPActive.SapGuiApp.OpenConnection(connectString, Sync: true);     
            SAPActive.SapSession = (GuiSession)SAPActive.SapConnection.Sessions.Item(0);   }

Die Buttons sind allerdings vorhanden. Wenn man lange genug mit der Maus über dem Button sit, erscheint ein Tooltip und der Button funktioniert dann auch. Ich hab ehct keine Ahnung woran das liegt 😦

Liebe Grüße TheSoulT

27.12.2018 - 23:59 Uhr

daran sieht man aber leider immer noch nicht, wo das Image herkommt, und auch nicht, wie es geladen wird

Hier wird das Bild geladen:

        private void FrmOp_AcceptOpenFrame(string sFile)
        {
            tabControl1.Visible = true;
            btnPreview.Visible = true;
            lblChoice.Visible = false;
            btnSave.Visible = true;

            Kontakt k = new Kontakt();
            k = Kontakt.OpenContact(sFile,sKey,sIv);
            this.txtName.Text = k.sName;
            this.txtFirstName.Text = k.sFirstName;
            this.txtTitel.Text = k.sTitel;
            this.txtSpitzname.Text = k.sSpitzname;
            if (k.bIsFemale)
            {
                this.rbtnFemale.Checked = true;
            }
            else { this.rbtnMale.Checked = true; }
            this.iContactPicture = Kontakt.StringToImage(k.sContactPicture);
            this.pictureContact.Image = iContactPicture;
        public static Image StringToImage(string sImage)
        {
            MemoryStream MS = new MemoryStream(Convert.FromBase64String(sImage));
            Image img = Image.FromStream(MS);
            MS.Close();
            return img;
        }

Danke euch, hab den Fehler gefunden. Das MS.Close() ist hier nicht richtig. Das ist schuld an der Fehlermeldung 😃
Vielen Dank für eure Mühen!

27.12.2018 - 01:03 Uhr

Interessanter Code.... da scheint jemand (vermutlich ein Kollege von Dir..?) von einer anderen Programmiersprache zu kommen und versucht dortige Muster auf C# umzumünzen 😉
)

Videotutorial 🙂 Ich wollte den Code jetzt etwas anpassen aber komm hier nicht weiter 🙁

Was für Dich eine "Hauptklasse" ist weiß ich nicht

Ich meinte damit nur die Klasse meiner Hauptuserform 😉

Wo auch immer das Image Objekt verwaltet wird; wird wohl nicht richtig verwaltet.

Hmm und was mach ich da jetzt? ?(

27.12.2018 - 00:52 Uhr

Es ist nicht mal im Ansatz erkenntlich, wie die Methode ImageToString verwendet wird.

Sorry hier der Code:

public void SetGeneralVars(string sSpitzname, string sTitel, string sBirthday, Image contactPicture)
        {
            this.sSpitzname = sSpitzname;
            this.sTitel = sTitel;
            this.sBirthday = sBirthday;
            this.sContactPicture = ImageToString(contactPicture, contactPicture.RawFormat);
        }

Die ImageToString Methode und SetGeneralVars sitzen beide in der 2. Klasse.
Das Bild wird in der Hauptklasse geöffnet und in eine Variable gespecihert und dann über SetGeneralVars an die zweite Klasse übergeben.

27.12.2018 - 00:25 Uhr

Guten Abend zusammen,

ich habe leider mit meinem Code ein kleines Problem und komme nicht weiter.
Ich habe eine Userform mit mehreren Buttons. Dazu eine PictureBox
Das Bild wird wie folgend hochgeladen:

private void btnLoadPicture_Click(object sender, EventArgs e)
        {
            OpenFileDialog OF = new OpenFileDialog();
            OF.Title = "Bitte Bild wählen...";
            OF.Multiselect = false;
            OF.Filter = "Bilder|*.jpeg;*.jpg;*.png;*.bmp|JPG-Bilder|*.jpeg;*jpg|PNG-Bilder|*.png|BMP-Bilder|*.bmp";
            DialogResult DR = OF.ShowDialog();

            if (DR == DialogResult.OK)
            {
                iContactPicture = Image.FromFile(OF.FileName);
                pictureContact.Image = iContactPicture;
            }
            else
            {
                pictureContact.Image = global::Personaldaten.Properties.Resources.Who_is_it;
            }
        }

Drücke ich auf den Button Save wird das Bild in einen String umgewandelt und zusammen mit den Infos aus den Textboxen in einer Datei gespeichert:

 private string ImageToString(Image img, ImageFormat imgFormat)
        {
            string sImg;
            MemoryStream MS = new MemoryStream();
            img.Save(MS, imgFormat); //Hier tritt der Fehler auf!!!!
            sImg = Convert.ToBase64String(MS.ToArray());
            MS.Close();
            return sImg;
        }

Über einen Öffnen Button kann ich jetzt die Inhalte der Textboxen und der PictureBox wieder mit den Inhalten der Datei befüllen. Drücke ich jetzt direkt wieder auf Speichern (weil ich irgendwelche Textboxen geändert habe) bekomme ich den im Titel genannten Fehler. Wenn ich aber erneut ein Bild auswähle bekomme ich diesen Fehler nicht.

Ich hoffe ihr könnt mir weiterhelfen 😃

Vielen Dank schon mal.

27.12.2018 - 00:08 Uhr

Löscht man die Zeile fs.Close(); oder kommentiert sie aus, verschwindet der Fehler.

herbivore

Das Problem sit, das ich dieseLÖsung nicht nutzen kann, weilin dem Code kein fs.close() vorhanden ist 😦
Aber ich werde nochmal ein neues thema mit meinem code eröffnen. Vllt reden wir ja auch aneinander vorbei 😃

26.12.2018 - 23:40 Uhr

aber meiner sieht identisch aus 😃
Er hat kein fs.close() und ich auch nicht 😛

26.12.2018 - 22:16 Uhr

Servus herbivore,

nur nutzen leider weder der threadersteller noch ich fs.Close().
Also wir haben das beide nicht in unserem Code 😄

25.12.2018 - 12:45 Uhr

Hallo zusammen,
kann mir jemand weiterhelfen? Ich habe eigentlich den identischen Code wie oben beschrieben und auch das identische Fehlerbild. Leider hilft es auch nichts den MemoryStream offen zu halten. Also wenn ich die Zeile MS.Close() auskommentiere tritt der Fehler immernoch auf.

Wäre dankbar für eure Hilfe 🙂

Liebe Grüße Tony