Laden...

Forenbeiträge von Joey2020 Ingesamt 10 Beiträge

09.11.2023 - 16:18 Uhr

String.PadLeft 😃 Super, danke... das hilft schon... Aber Reg-ex schau ich mir auch nochmal an... vielleicht kann ichs noch bischen "schöner" machen...

09.11.2023 - 14:31 Uhr

Huhu,

ich habe mehrere Strings mit Inhalten:

Der Inhalt der Strings hat immer eines von 2 formaten:

  1. Eine Zahl (einstellig - maximal 7-stellig)

Beispiele:
1
5
268

oder

2. Eine Zahl  (einstellig - maximal 7-stellig) gefolgt von einen "-" und einer weitere Zahl (max 3 stellig)

Beispiele:
2-1
45-10
6-12

Nun möchte ich die Strings "umformatieren" in folgendes Format

Wenn es nur eine Zahl ohne "-" ist:

7 stellig auffüllen mit führenden Nullen:
0000001
0000005
0000268

Wenn es eine Zahl mit "-" ist:
0000002-1
0000045-10
0000006-12

Ohne "-" geht so:

string fmt="0000000";
string nr="1"
string neu = Int32.Parse(nr).ToString(fmt);

Mit dem "-" drin gehts natürlich nicht weil ich ein String mit einem "-" nicht nach INT umwandeln kann...

Ich habs dann so gelöst:

string fmt="0000000";
string nr="2-1"
string pre;
string suf;
int indexOfMinus = nr.IndexOf("-");

if (indexOfMinus != -1)
{
    pre= nr.Substring(0, indexOfMinus);
    suf= nr.Substring(indexOfMinus, FilterEvidence.Length - indexOfMinus);
    string neu =  Int32.Parse(pre).ToString(fmt) + suf
}
else
{
    string neu = Int32.Parse(nr).ToString(fmt);
}

Das ist a) ziemlich viel Code für wenig Funktion und außerdem irgendwie blöd das ich den String in INT konvertieren muss...

Gibt es da nicht eine schönere Methode das zu tun?

Ich habe mir string.format angeschaut, konnte es damit aber nicht hinbekommen...

Wäre dankebar wenn jemand eine Idee hat!

Grüße,

Joe

01.11.2023 - 15:22 Uhr

Hallo Leute,

ich habe 2 Listen (ziehe unten) und möchte nun wissen ob ein bestimmter Wert in beiden Listen vorkommt.
Und wenn nein, möchte ich die eine Liste verändern...

Liste1:
NR: 001 / Skip: false / Artikel: Reifen
NR: 006 / Skip: false / Artikel: Scheinwerfer
NR: 020 / Skip: false / Artikel: Auspuff
NR: 452 / Skip: false / Artikel: Sitz

Liste2:
NR: 006
NR: 020

Nun möchte ich Liste1 so manipulieren das bei allen NR die NICHT in Liste2 stehen das Feld "Skip" auf true gestellt wird.

Am Ende soll Liste1 also so aussehen:

Liste1:
NR: 001 / Skip: true / Artikel: Reifen
NR: 006 / Skip: false / Artikel: Scheinwerfer
NR: 020 / Skip: false / Artikel: Auspuff
NR: 452 / Skip: true / Artikel: Sitz

Nun hab ich mir überlegt das mit 2 verschachtelten foreach-Schleifen zu machen - geht natürlich - aber ich kann mir nicht vorstellen das es da keine bessere Möglichkeit gibt...:-)

Die Definition der Listen:

public static List<Liste1> KompletteListe = new List<Liste1>();
public static List<Liste2> NurNummern= new List<Liste2>();
...
blabla-Code...
...
public class Liste1
{
	public string NR { get; set; }
    public bool Skip{ get; set; }
    public string Artikel { get; set; }
}

public class Liste2
{
	public string NR { get; set; }
}

Kann mir jemand ein Tipp geben wie ich das machen kann ohne doofe foreach-Verschachtelungen bei dennen ich beide Listen durchgehen muss?!?

Vielen Dank!

Joey

29.01.2021 - 19:19 Uhr

Ok, danke.

Ich habs nun 9 Stunden versucht, ich hab alles gelesen und nix verstanden.
Ich denke ich bekomms nicht hin, selbst zum lesen der Doku fehlt mir zuviel Wissen...
Ich lass es jetzt, bringt ja nix jetzt nach 9 Stunden noch weiter nach einem (wahrscheinlich) 10 Zeiler zu "suchen"...:-)

Trotzdem Danke!

29.01.2021 - 16:41 Uhr

Danke, ich hab das schon gesehen - aber es hilft mir nicht weiter da ich es nicht verstehe bzw. nicht verstehe wie es zu programmieren ist... ich bin Anfänger und versuche anhand von Beispielen zu verstehen wie sowas aussehen muss...

Das Peak-Meter für die Soundkarte habe ich ja hinbekommen.

Aber das Peakmeter für eine einzelne Anwendung auf der Soundkarte - das ist das Problem...:-(

29.01.2021 - 09:12 Uhr

Hallo Leute,

ich nutzte NAudio zum Auslesen des Soundpeaks meiner Soundkarte...

Das klappt perfekt...

Ich möchte aber den Soundpeak einer Anwendung (zB Firefox) einzeln auslesen...

Diesen Code nutzte ich im Moment:


NAudio.CoreAudioApi.MMDeviceEnumerator enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();
var adevice = enumerator.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All,  Audio.CoreAudioApi.DeviceState.Active);
cbDevice.Items.AddRange(adevice.ToArray());

cdDevice ist eine DropDown-Liste wo alle Devices reingeschrieben werden...

Nun kann ich das Device auswählen und lese dann den Peak mit einem Timer aus:


var adevice = (NAudio.CoreAudioApi.MMDevice) cbDevice.SelectedItem;
txtPeakLevel.Text = adevice.AudioMeterInformation.MasterPeakValue.ToString();

txtPeakLevel ist eine Textbox...

So habe ich natürlich mehrere Anwendungen laufen:
Firefox
Amazon Music
Discord

Und alle Anwendungen machen Sound...

Ich möchte aber nur den Sound von Discord "messen"...
Ich hab mich blöd gesucht, ich finde keine Möglichkeit nur die Anwendung abzufragen.
Immer wird das komplette Device (in meinem Fall eine Realtek-Soundkarte) abgefragt...

Hat jemand ein Codebeispiel wie das gehen soll?!?

Vielen Dank schonmal!
Grüße,
Joerg

22.06.2020 - 14:27 Uhr

Hallo Leute,

ich habe folgenden Code:


Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Encoding encoding = Encoding.GetEncoding(1252);

            if (Encoder == "other") {
                System.IO.StreamReader file1 =
                    new System.IO.StreamReader(@filename1);
            }
            else {
                System.IO.StreamReader file1 =
                    new System.IO.StreamReader(@filename1, encoding);
            }

            while ((line = file1.ReadLine()) != null)
...

Leider geht das nicht weil er in der while-Schleide dann file1 nicht kennt...

Wie kann ich denn, abhängig vom Inhalt der Variable "Encoder" ein File mit verschiedenen Encodings öffnen?
Ich habe auch versucht:


Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);


            if (Encoder == "other") {
               Encoding encoding = Encoding.GetEncoding(1252);
            }
            else {
                Encoding encoding = Encoding.GetEncoding(65001);
            }

            System.IO.StreamReader file1 = new System.IO.StreamReader(@filename1, encoding);
            while ((line = file1.ReadLine()) != null)
...

Auch das geht nicht...:-(

Jemand einen Tipp?

Danke!
Joey

Edit:
Hat sich erledigt!

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            // Encoding encoding = Encoding.GetEncoding(1252);
            Encoding encoding;

            if (Encoder == "other") {
                encoding = Encoding.GetEncoding(1252);
            }
            else {
                encoding = Encoding.GetEncoding(65001);
            }

So gehts...:-)

19.06.2020 - 10:12 Uhr

Ahhh, danke dir, das scheint zu gehen - ich teste es jetzt nochmal ausführlich.

1000 Dank!

Edit: Funktioniert! Nochmal vielen Dank, du hast mir echt geholfen!

19.06.2020 - 09:27 Uhr

Danke für deine Antwort.

Ich habe es nun so versucht:

Encoding wind1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252);
Encoding utf8 = Encoding.UTF8;

while ((line = file1.ReadLine()) != null)
{
   byte[] wind1252Bytes = wind1252.GetBytes(line);
   byte[] utf8Bytes = Encoding.Convert(wind1252, utf8, wind1252Bytes);
   string utf8String = Encoding.UTF8.GetString(utf8Bytes);
   Console.WriteLine(utf8String);
}

Natürlich ohne Erfolg - meine Umlaute (äöü) werden in der Console als ? angezeigt...

Ich weiß echt nicht was ich noch machen soll - ich habe die Doku gelesen und sämliche Codebeispiele versucht - ich bekomme es nicht hin.

Ich habe die Textdatei mal angefügt - es muss doch ohne viel Aufwand möglich sein die mit Umlauten usw einzulesen...

Hat jemand ein Codebeispiel für mich das funkltiniert?

Vielen Dank!

18.06.2020 - 22:33 Uhr

Hallo Leute,

ich bin Programmieranfänger und habe ein Problem mit einer Datei die ich folgermaßen einlese:

System.IO.StreamReader file1 =
                new System.IO.StreamReader(@Datei);
while ((line = file1.ReadLine()) != null)
{
 // ...
}

Ich muss Zeile für Zeile einlesen weil ich mit jeder Zeile was mache, also möchte ich nicht die komplette Datei auf einmal einlesen.

Soweit sogut...

Der Inhalt der Datei ist:

e73e57 Pax_26.09.2019\Mex\M+U\M&U.ppt
d265d1 Pax\hdue\dwe\eew's\08Edsn_update - for ew.xls
ebb73e Pax\das dasu\ABC\121_KurzPräs.pdf
e6d6ed Pax\dsa(huuh)\~$rkeg-312HasBear 2225-04-202_UBU.doc
5fb411 Pax\dast (ds)\~Wdas764.tmp
54b429 Pax\dsds\ds- da\dsds(SAaaaawqA'S).xls
9af816a Pax\fsd - ZZZ\OK\Ea+WQW\2021Mo_K_KurzPräs.pdf

Wenn ich das File in Notepad++ öffne sagt er das die Kodierung der Datei ANSI ist.

Leider ist der Inhalt von meinem "line" in einigen Fällen "nicht korrekt".

Benutzte ich zB
System.IO.StreamReader file1 =
new System.IO.StreamReader(@Datei);
werden alle Umlaute durch so eine komische schwarze Raute mit ? ersetzt.

Benutzte ich zB
System.IO.StreamReader file1 =
new System.IO.StreamReader(@Datei, Encoding.UTF7);
werden + Zeilen durch \uBDO2 ersetzt.

usw usw

Ich habe alle Encodings die Visual Studio vorschlägt probiert, keines funktioniert so das am Ende wirklich alle "korrekt" in der Var line drinsteht.

Konvertiere ich nun die Datei mit Notepad++ vor dem Einlesen in UTF8, dann funktioniert es direkt.
Alles in line ist da, Umlaute und + Zeichen sind korrekt drin...

Ich habe mich blöd gesucht und keine Lösung gefunden, ich bin sicher es ist trivial - aber ich bekomms nicht hin...

Kann mir jemand sagen wie ich den Inhalt der Datei korrekt in einen string bekomme (inkl. Umlaute, und + (plus))?

Ich möchte die Datei nur wenn es nicht anders geht in der Software vorher konvertieren.
Am liebsten würde ich c# sagen: hey, das ist ne ANSI-datei, ließ diese bitte mit äüö und + usw ein und veränder da nix...
Nur im Notfall möchte ich das File einlesen und dann als UTF8 speichern... ich möchte das original ANSI-File also nicht verändern!

Ich wäre sehr dankbar wenn mir jemand mit einem Codebeispiel helfen könnte!

PS: Ich möchte außerdem prüfen ob das File in ANSI kodiert ist und nur dann möchte ich „was verändern“. Wenn das File nämlich UTF8 ist, funktioniert es ja ohne Probleme. Und manchmal ist das File das ich einlesen will utf8, manchmal ANSI... ich möchte das irgendwie prüfen, weiß aber auch hier nicht wie ich das prüfen kann...

Vielen Dank!
Joey