Hallo,
ich habe einen Text, bei dem div. Texte gleich sind, aber dazwischen ist der Wert unterschiedlich. Möchte das Ganze aber weg haben.
Beispiel:
Zeile1__AnfangGleich_1234_EndeGleich_weiterer_TextABC
Zeile2__AnfangGleich_4311AAss34_EndeGleich_weiterer_TextDEF
Zeile3__AnfangGleich_üpaos3GG4_EndeGleich_weiterer_TextGHI
Alles, was mit "AnfangGleich" und "EndeGleich", incl. dieser 2 Werte, soll weg sein.
Soll am Ende so aussehen:
Zeile1___weiterer_TextABC
Zeile2___weiterer_TextDEF
Zeile3___weiterer_TextGHI
Wollte das so machen:
String FilterAnfang = "AnfangGleich";
String FilterEnde = "EndeGleich";
neuerText = alterText.Replace("["+FilterAnfang+"]*[" + FilterEnde+"]+", "");
Was mache ich falsch, wie muss ich den REGEX-Wert korrekt eintragen?
Tschau
Hallo Abt,
Dein Tipp
"Cache-Dateien löschen (.vs
Ordner)"
scheint gut zu funktionieren. Erhalte wieder Fehler im ganzen Projekt angezeigt.
PS: Ich öffne immer die SLN-Datei, ansonsten hätte ich nicht das ganze Projekt.
Danke.
Tschau
das mit dem Löschen der Dateien probiere ich mal.
Ich öffne immer über die sln-Datei. Habe mehrere Projekte in der Mappe drin. Ansosnten wären diese nicht da.
Hallo,
seit heute zeigt mir Visual Studio 2022 Community Edition, Version 17.11.5 keine Fehler mehr für Intellisence an.
Ich gebe unsinnige Werte ein, aber diese werden mir unten in der Fehlerliste nicht angezeigt. Sehe dort nur 0 Fehler. Egal ob ich dort draufklicke oder nicht. Rechts ist "Erstellen + IntelliSense" standardmäßig ausgewählt.
Habe bereits die Standardeinstellungen von VisualStudio hergestellt. Brachte alles nichts.
Any Idea?
Tschau
habe den Fehler gefunden:
aus einem nicht nachvollziehbarem Grund, war die Breite der Spalten auf 0 gewesen und daher nichts sichtbar. Konnte das breiter ziehen, voila, geht es.
Die Anwendung läuft auf 2 Systemen:
Es wird nichts gelöscht, kein clear, etc.
Der Ablauf ist jeweils identisch.
Ich weiss nicht, ob es etwas mit WindowsServer zu tun hat, etc. Habe Windows-Desktop-Runtime installiert, sogar die aktuelle Version 8.0.8 und 8.0.10
so sieht es korrekt aus, siehe Anhang
Hallo,
ich habe eine kleine .net-Windows-Formanwendung mit .net 8.
In Windows11 wird das Listview korrekt dargestellt, auf dem WindowsServer 2022 Standard 21H2 werden aber keine Spalten dargestellt. Lediglich die Scrollbars sind sichtbar.
Siehe Bilder im Anhang.
View ist auf Detail eingestellt.
windowsdesktop-runtime-8.0.10-win-x64.exe wurde auch installiert.
Die Anwendung läuft ansonsten, es werden Daten aus einem System eingelesen und in der SQL-Datenbank gespeichert. Lediglich die Listview-Darstellungen gehen nicht, dort auch kein Click.
Was muss ich denn irgendwo einstellen, dass das Listview auch auf dem WindowsServer dargestellt wird?
Tschau
wie kann ich denn mit WebView2 einen HTML-Code syncron auslesen oder wie kann ich aus einer syncron eine asyncrone Routine aufrufen?
Ich bekomme das nicht hin.
Hallo,
ich möchte mit WebView2 den Source-Code einer Webseite auslesen:
ich möchte eine Webseite mit WebView2 auslesen.
Microsoft.Web.WebView2.WinForms.WebView2 WvLinkInhalt=new Microsoft.Web.WebView2.WinForms.WebView2();
Task<string> task = InternetAsync(LStr_Link, WvLinkInhalt);
String html = task.ToString();
public static async Task<string> InternetAsync(String Url, WebView2 webView2)
{
//https://stackoverflow.com/questions/62431464/vb-net-webview2-how-can-i-get-html-source-code
string html = "";
try
{
webView2.NavigateToString(Url);
html = await webView2.ExecuteScriptAsync("document.documentElement.outerHTML");
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
return html;
}
Allerdings erhalte ich mit diesem Code keinen Rückgabewert zurück.
Vermutlich muss ich da irgendwie auf etwas warten. Wie kann ich das aber umsetzen? Ich möchte anschließend das html auswerten.
Tschau
Martin
wo kann man denn ein Zertifikat für .net kaufen? Meine Suche findet nur Zertifikate für Webseiten oder sich für Seminare zur Zertifizieren.
Gibt es günstige Zertifikate für Freeware-Produkte?
Hallo,
ich möchte es schon als EXE anbieten.
Habe umbenannt von FIMANSolarSetup.exe auf FIMANSolar.exe. Hat leider nichts gebracht. Am Notebook lade ich runter und dann sage ich "Datei öffnen" am Firefox. Leider kommt dann keine Reaktion.
Beim Edge steht beim Download leider nur:
"FIMANSolar.exe wird häufig nicht heruntergeladen. Stellen Sie sicher, dass Sie FIMANSolar.exe vertrauen, bevor Sie es öffnen."
Ich muss es beim Edge erst als sicher deklarieren, bevor ich es installieren kann.
Wie kann ich das doch als sicher darstellbar machen?
Tschau
Hallo,
ich habe mit C# (.net 8) ein kleines Tool erstellt, um eine Photovoltaikanlage auszulesen.
Diese möchte ich für andere ebenfalls zur Verfügung stellen: https://www.fiman.de/solar/FIMANSolarSetup.exe
Im Firefox kann ich die Datei auf meiner Webseite anklicken: https://www.fiman.de/cms_select.php?ID=369 und herunterladen und speichern.
Am Entwicklungsrechner erscheint die Anwendung und erhalte den Button "Nicht ausführen", aber unter "Weitere Informationen" kann man die Anwendung installieren, bzw. ausführen.
Am Notebook kann ich die Anwendung herunterladen, aber beim Starten der ..Setup.exe tut sich nichts.
Mit dem Edge kann ich diese herunterladen und dann zum Installieren starten.
Für eine andere Software habe ich das auch mal an Microsoft gesendet, aber nichts freigeschaltet bekommen.
Muss ich da noch etwas tun?
Tschau
Hallo,
gibt es eine freies/kostenloses Ribbon-Tool für .NET 8 (WindowsForms) ? Habe leider noch nichts gefunden, was frei/kostenlos ist.
Für .net Framework 4.8 habe ich eines, kann das aber nicht nicht .NET 8 konvertieren.
Tschau
Martin
Hallo,
ich habe eine HTML-Text und möchte dort die <p>-Werte auslesen.
<div class="artikel">
<p>text1</p>
<p>text2</p>
<div ...>
<p>text3</p>
<p>text4</p>
</div>
Dabei kann allerdings mal ein anderes Tag sein, was ich nicht möchte. Ich möchte nur die Werte innerhalb <p> und </p> haben.
Habe es mit
var doc = new HtmlDocument();
doc.LoadHtml(html);
var paragraphs = doc.DocumentNode.SelectNodes("[@class='article__text']//p");
if (paragraphs != null)
{
foreach (var paragraph in paragraphs)
{
Console.WriteLine(paragraph.InnerText);
}
}
versucht, aber das geht nicht.
Wie mache ich es richtig?
Tschau
Hallo,
ich möchte eine Webseite auslesen. Habe dazu HTMLAgility verwendet.
Wenn ich die Seite im Browser aufrufe oder auch über WebView2, dann wird alles korrekt dargestellt:
URL: https://www.finanzen.net/index/sdax/werte
Wenn ich über den Code
HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load(LStr_URL);
return doc.Text;
verwende, erhalte ich nur diese Fehlermeldung zurück:
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
You don't have permission to access "http://www.finanzen.net/index/sdax/werte" on this server.<P>
Reference #18.cf580317.1715336877.eeeef10
<P>https://errors.edgesuite.net/18.cf580317.1715336877.eeeef10</P>
</BODY>
</HTML>
Wie komme ich trotzdem an den HTML-Code, um diesen auszuwerten?
Tschau
Biker68
Hallo,
ich habe ein Dictionary erstellt. Die Daten habe ich erstmal manuell als Vorgabe erstellt.
Wenn ich diese aber nach einem Wert sortieren möchte, über LINQ, erhalte ich eine Fehlermeldung:
Das Objekt des Typs "System.Linq.OrderedEnumerable`2[System.Collections.Generic.KeyValuePair`2[System.Int32,FIMAN.FIMANInternetAnbieter],System.Int32]" kann nicht in Typ "System.Collections.Generic.Dictionary`2[System.Int32,FIMAN.FIMANInternetAnbieter]" umgewandelt werden.
Verwendetes Datenbanksystem: LINQ
Dictionary<int, FIMANInternetAnbieter> L_ListeInternetAnbieter_sortiert=null;
try
{
L_ListeInternetAnbieter = FIMANInternetAnbieter.AnbieterlisteLaden(L_ListeInternetAnbieter);
//L_ListeInternetAnbieter_sortiert = (Dictionary<int, FIMANInternetAnbieter>)(from Anbieter in L_ListeInternetAnbieter orderby Anbieter.Value.Reihenfolge ascending select Anbieter);
var L_ListeInternetAnbieter_sortiert2 = from Anbieter in L_ListeInternetAnbieter orderby Anbieter.Value.Reihenfolge ascending select Anbieter;
L_ListeInternetAnbieter_sortiert = (Dictionary<int, FIMANInternetAnbieter>)L_ListeInternetAnbieter_sortiert2;
}
catch (Exception ex)
{
FIMANLogging.WriteErrorLog("ERROR", "FIMANInternetAnbieter:AnbieterlisteSortiert", ex);
throw;
}
return L_ListeInternetAnbieter_sortiert;
Es ist egal, ob ich den auskommentierten Code verwende oder den Umweg über "var". Die Fehlermeldung kommt immer.
Wie bekomme ich den Fehler weg, der nur zur Laufzeit auftritt?
Tschau
habe den Fehler gefunden. Firewall war soweit korrekt, allerdings hatte ich die falsche EXE ausgewählt. Da war noch eine ältere Installation aus einer früheren Installation in der Firewallfreischaltung ausgewählt. Jetzt geht es wieder.
Danke für die Unterstützungen.
warum sollte es mit der EXE nicht gehen?
Es ging mit Windows10 + WindowsServer2019. Bei Windows11 + WindowsServer2022 wird das wohl blockiert.
Ich schaue mir Deinen Link aber mal näher an.
PS: Gibt es ggf. eine alternative Technik zu WCF?
auf Windows Server 2022:
Einstellungen → Kommunikation von Apps durch die Windows Defender Firewall zulassen
-> Zugelassene Apps und Features
-> meine Anwendung → Haken bei Domäne/Privat/Öffentlich
Auf dem Windows11-PC ebenfalls.
Hallo,
ich habe eine kleine Anwendung mit .net. Diese läuft auf einem Server und auf einem Client.
Auf dem Client ist ein kleines Tool, dass per WCF prüft, ob die Anwendung auf den verschiedenen Rechnern läuft. Das ging bisher ganz gut.
Seitdem ich von WindowsServer2019 auf WindowsServer2022 und Windows10 auf Windows11 gewechselt bin, geht das nicht mehr.
Ich habe die Firewall jeweils freigeschaltet, habe auch bei den ServerFeatures alle WCF-Dienste aktiviert.
Gibt es dazu weitere Einstellmöglichkeiten?
Tschau
Martin
habe es nun anders gelöst: Habe das SplitterControl rausgeschmissen und das "TableLayoutPanel" verwendet. Das scheint überall gut auszusehen. Muss ich mal länger durchtesten.
Hallo,
also, das hat keinen Einfluss:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 compatibility -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
das aber schon, aber katastrophal, nicht brauchbar:
<configuration>
<!-- ... other xml settings ... -->
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
</configuration>
Sehe aber, das scheint nicht das Listview zu sein, sondern habe darüber einen "Splitcontainer". Am Entwicklungs-PC sieht es mit 150 % gut aus, am Notebook mit 200% habe ich allerdings die Probleme.
Der Splittingscontainer ist gedacht, wenn kleine Bildschirme vorhanden sind, dass man auch noch etwas sieht. Ansonsten liebe ich es mit Anchor zu arbeiten, aber bei verschiedenen Tabellen untereinander und nebeneinander, ist das nicht mehr hilfreich.
Gäbe es andere Möglichkeiten ?
Tschau
Martin
Hallo,
ich habe auf einer Windows-Form mehrere Listviews. Diese passen sich bei normaler DPI-Zahl gut an.
Habe aber ein Notebook mit hoher DPI-Zahl und dann ist das Listview recht winzig. Habe darüber ein Panel und das Listview entsprechend Dock=Fill.
Habe Listview unter ein Panel und nur Anchor auf Top, Left, Right, Button gesetzt, trotzdem erhalte ich winzige Listviews.
Habe leider nichts konkretes bei der Google-Suche gefunden, nur Hinweise auf generelle Anpassungen, die auf die app.config hinweisen:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true"/>
</appSettings>
Hat jemand Tipps für mich ?
Tschau
Martin
Danke für die Links.
Habe den Wiederherstellungsmodus auf "Einfach" gestellt. Damit fällt das mit des Transaktionsprotokoll weg.
Das reicht mir.
Danke für die Hilfe und Hinweise.
Ich beobachte es weiter.
Backup-Datei ist ca. 10 GB groß
Die .ldf-Datei ist ca. 62 GB und die .mdf-Datei ca. 11 GB groß
Hallo,
meine SQL-Datenbank (SQL Server Version 14.0.2047) ist sehr groß.
Das Transaktionsprotokoll ist dort immer wieder voll.
Daher lasse ich nachts über die "Aufgabenplanung/Taskplaner" einen Job laufen.
Dabei wird die Datenbank gesichert und das Transaktionsprotokoll gespeichert und reduziert.
Dabei ist das Transaktionsprotokoll immer größer und größer geworden, auch die exportierte Datei.
Jetzt bin ich hergegangen und habe den Namen der Transaktionsprotokolls-Datei mit einem Timestamp versehen,
damit immer eine neue Datei erzeugt wird.
Im Grunde geht es, aber die Datei wird täglich größer und größer und nach ca. 3-4 Tagen ist
das Transaktionsprotokoll wieder voll.
Dann lasse ich diesen v. g. Task im Aufgabenplanung/Taskplaner wieder neu laufen und
die exportierte Transaktionsprotokolls-Datei ist klein und alles wieder gut.
Das Transaktionsprotokoll soll aber immer kleiner werden. Was muss ich in meinem Script da noch anpassen ?
Betriebssystem: Windows Server 2019
Client: Windows 10 und 11
DB: SQL Server 2017 Express
.net: Framework 4.8 (C# + VB)
Task im Aufgabenplanung/Taskplaner:
SQLCMD -E -S SVxy\SQLExpress -i S:\Backup\SQL-Server\FIMAN-DB-Backup.sql
FIMAN-DB-Backup.sql:
USE [FIMANSQL_SERVER3]
EXEC sp_helpdb FIMANSQL_Server3
-- sichern der DB
BACKUP DATABASE [FIMANSQL_SERVER3] TO DISK = N'C:\SQL\BAK\FIMANSQL_Server3_auto.bak' WITH NOFORMAT, INIT, NAME = N'FIMANSQL_SERVER3-Vollständig Datenbank Sichern', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
-- sicheren der Transaktionsdatei
Declare @filename3 as char(255)
Declare @datum as char(15)
Set @datum = (replace(str(DatePart(YYYY, GetDate()), 4), ' ', '0') +
replace(str(DatePart(MM, GetDate()), 2), ' ', '0') +
replace(str(DatePart(DD, GetDate()), 2), ' ', '0') + '_' +
replace(str(DatePart(hh, GetDate()), 2), ' ', '0') +
replace(str(DatePart(mi, GetDate()), 2), ' ', '0') +
replace(str(DatePart(s, GetDate()), 2), ' ', '0'))
Set @filename3 = 'D:\SQL\FIMANSQL_Server3_Transaktionsprotokoll'+@datum+'.trn'
-- BACKUP LOG [FIMANSQL_SERVER3] TO DISK = N'C:\Daten2\SQL\FIMANSQL_Server3_Transaktionsprotokoll.trn'
-- WITH NOFORMAT, NOINIT, NAME = N'FIMANSQL_SERVER3-Transaktion Datenbank Sichern',
-- SKIP, NOREWIND, NOUNLOAD, STATS = 10
-- BACKUP LOG [FIMANSQL_SERVER3] TO DISK = N'd:\sql\FIMANSQL_Server3_Transaktionsprotokoll%date%.trn'
BACKUP LOG [FIMANSQL_SERVER3] TO DISK = @filename3
GO
-- reduzieren der Log-Datei
DBCC SHRINKFILE ("FIMANSQL_Server2_log")
GO
Tschau
Martin
achja, es darf auch nicht unter
C:\Program Files
bzw.
C:\Program Files (x86)
sein. Das ist der v. g. Bug.
Hallo,
habe es gelöst.
Dein Hinweis hat mich auf die Idee gebracht.
Habe das Deploy-Verzeichnis lokal reinkopiert, dann ging es. Habe nun die Dateien verglichen, die per Innosetup installiert wurden.
Beim Editieren war mir nicht aufgefallen, dass neben der DLL-Datei auch noch 2 weitere Unterverzeichnisse neu dazugekommen sind.
Die habe ich nun ergänzt und nun scheint es zu klappen.
Danke für den Ideen-Bringer.
Tschau
Martin
Das Problem ist nur, beim Deployen auf dem lokalen PC oder auf einem anderem PC.
Innerhalb der Entwicklungsumgebung werden Webseiten (egal welche, mit/ohne Scripte) korrekt dargestellt.
Auch die EXE-Datei im BIN-Verzeichnis, direkt nach dem Erstellen, läuft korrekt.
klar, der geht einwandfrei.
Alles andere geht auch.
Rufe ich die EXE-Datei direkt bei der Entwicklung auf, geht es.
Deploye ich es auf dem PC, dann zeigt diese Version leider keine Webseiten innerhalb des Programmes an.
Hallo,
habe in meine winforms-VB.net/C#-Anwendung webview2 eingefügt.
Das klappt in der Laufzeitumgebung und nach dem Compilieren.
In der Anwendung werden Browserdarstellungen mit webview2 durchgeführt.
Beim Installieren auf dem PC per Innosetup, erhalte ich zwar keine Fehlermeldung,
aber das webview2 zeigt nichts an.
Eintrag in Innosetup:
Source: "...\Microsoft.Web.WebView2.WinForms.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "...\Microsoft.Web.WebView2.Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "...\Microsoft.Web.WebView2.Wpf.dll"; DestDir: "{app}"; Flags: ignoreversion
Habe gelesen, webview2 muss als Feature oder ähnl. auf dem PC installiert werden.
Wenn ich das mit der Runtime versuche, dann wird gesagt, ist installiert.
In der App-Liste steht es auch drin, bei Win10 und Win11.
Weiss jemand, ob man noch irgendwas installieren muss/eintragen muss ?
Links:
erste Schritte:
https://learn.microsoft.com/de-de/microsoft-edge/webview2/get-started/winforms
Deployment:
https://learn.microsoft.com/de-de/microsoft-edge/webview2/concepts/distribution
Tschau
Martin
ich habe doch noch was gefunden:
Projektmappen-Explorer → My Project → Verweis
Dort stehen oben die oben die Verweise. Meine Unterprojekte/Klassen müssen dort stehen.
Darunter steht "Importierte Namespaces". Dort muss der Haken jeweils weg sein.
Dann erhalte ich keine Warnhinweise mehr.
PS: Die Hinweise über Google zum diesem Weg, waren sehr irreführend.
Tschau
Martin
Hallo,
Danke für den Link. Habe mir das angeschaut und sowas schon vermutet. Allerdings ist mein Problem: Wo finde ich den "Project Designer", wo "Importierte Namespaces" ?
Ich arbeite mit Visual Studio 2022 Community-Edition, Framework 4.8.
Habe zwar den "Projektmappen-Explorer", dort die "Verweise" + "My Project" vom Projekt.
In "Verweise" sind die jeweiligen Unterprojekte aufgelistet, in "My Project" finde ich "Einstellungen", aber dort nichts konkretes mehr.
Wo finde ich denn diese "Importierte Namespaces" ?
PS: Googeln hat mir leider nicht weitergeholten.
Tschau
Martin
Hallo,
ich habe ein größeres .net-Projekt: VB + C#
Die Oberfläche ist (aus historischen Gründen) in VB.net entwickelt, die meisten Klassen aber in C#.
Wenn ich mein Projekt kompiliere (neu erstelle), erhalte ich 4 x folgende Warnings:
warning BC40057: Der in Imports "FIMANFassade" auf Projektebene angegebene Namespace oder Typ enthält keine öffentlichen Member
oder wurde nicht gefunden. Stellen Sie sicher, dass der Namespace oder der Typ definiert ist und mindestens einen öffentlichen
Member enthält und der importierte Elementname keine Aliase verwendet.
Das Projekt läuft einwandfrei, möchte aber trotzdem den Warning-Hinweis entfernen. Wie mache ich das ? Was fehlt ?
Tschau
Martin
Hallo,
ich möchte die Webseite per Code herunterladen, allerdings erhalte ich keine konkreten Inhalte. Anscheinend werden diese nachgeladen, C# erkennt das nicht.
Wenn ich mit dem Firefox die Seite aufrufe, erhalte ich die Inhalte angezeigt, mit dem IE11 allerdings nicht. C# verhält sich anscheinend eher wie IE11 als ein moderner Browser.
Link:
https://app2.msci.com/products/index-data-search/
Wie komme ich trotzdem an den Inhalt ?
Mein Code bisher:
const String fireFoxUserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15";
//Anfrage an die Übergebene URL starten
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.UserAgent = fireFoxUserAgent;
//Antwort-Objekt erstellen
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//Antwort Stream an Streamreader übergeben
StreamReader sr = new StreamReader(response.GetResponseStream());
//Antwort (HTML Code) auslesen
string html = sr.ReadToEnd();
//Streamreader und Webanfrage schließen
sr.Close();
response.Close();
//Quellcode zurückgeben
return html;
Auch mit dem HtmlAgilityPack erhalte ich keinen Tabelleninhalt:
HtmlWeb web = new HtmlWeb();
var htmlDoc = web.Load(LStr_Link);
var node = htmlDoc.DocumentNode.SelectSingleNode("card border-zero");
Wie komme ich trotzdem ran ?
Tschau
Martin
ich weiß, HTML ist für Webdarstellung im Browser.
In dem ist im Body-Bereich die Tabelle <table> mit den Kopfzeilen <th>, Zeilen <tr> und Spalten <td>.
Dachte, es gibt schon schönen Code dafür, den ich gerade verwenden könnte, ohne stundenlang das auszutüffeln.
Tschau
Martin
Hallo,
ich suche ein Stück Code, um eine HTML-Datei in CSV umzuwandeln.
Das Einlesen ist kein Problem, aber wie wandle ich den HTML-Code in CSV um ?
Die HTML-Daten sind in tables und in th (Kopf), tr (Zeile) und td (Spalte) unterteilt.
Habe beim googlen nichts gefunden. Es sollte ohne Zusatz-DLL gehen.
PS: Die HTML-Datei wird per Excel wunderbar in einer Tabelle dargestellt. Ich möchte aber eine autom. Konvertierung.
Tschau
Martin
ah, habe ein POST vergessen, aber trotzdem:
C:\>curl -d "@S:\FIMAN\config\CurlBlackrock_Post.txt" -X POST "https://www.blackrock.com/at/privatanleger/product-screener/product-screener-v3.jsn?type=excel"
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
Vermutlich ist meine txt-Datei nicht korrekt. Was muß da rein, von diesen vielen -H -Teilen ?
ah, Danke für den Hinweis.
Habe den CURL mal etwas zerpflückt, dieser besteht aus div. Teilen.
"https://www.blackrock.com/at/privatanleger/product-screener/product-screener-v3.jsn?type=excel"
-X POST
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0"
-H "Accept: application/json, text/plain, */*"
-H "Accept-Language: de,en-US;q=0.7,en;q=0.3"
-H "Accept-Encoding: gzip, deflate, br"
-H "Referer: [url]https://www.blackrock.com/at/privatanleger/produkte/product-list[/url]"
-H "Content-Type: application/x-www-form-urlencoded"
-H "Origin: [url]https://www.blackrock.com[/url]"
-H "Connection: keep-alive"
-H "Cookie: STICKY_SESSION_COOKIE_UK_RETAIL01_LIVE=""a39b33c9c603a57c""; STICKY_SESSION_COOKIE_UK_RETAIL01_LIVE=""6d3d24608e3f907f""; _abck=F39CDF40E4F5BE98F7F0C90CB6B3385C~0~YAAQj6cpF/RT651/AQAA8ZmzvQeVdc1wrl1/i94WNqHdTuCTFz+GdsH7+C8LLbArPjJMwlfo0DoIqd3VjmVBQlicQrjOGgM0aijZ9q4HbZLbHkdYC5kNOTkiEtlbUTsqmAEqEYI1ORVvLunNC5qYCqX9HFqZtdwywfyoeYQxp/bk1QSniUWa57dA/CGFdQ5V4qPSEVCXcSvOpp08axlyd7ZcBvXoINZ6x3nonN4bnMMEpCAJSlSwi/BZ04a8uXwb07ZwBJnaGu7XMqlSD3VW6rv5v7on6RE8Wbsbbf/6BcTTCy1a/G6xmAItjdicnw69QzyJ2c9AXMM2gP0ZO+lhQFmHmtMFlNGzim1aR9KRL3bxQbmtWShX9WD4gE2MGJWVXgD3hGd+javjvmFBy0Vr1ffAqlPqvxIgUqOZ~0~||-1||~-1; ts-one-at-locale=de_AT; utag_main=v_id:017efbde4f8c001fae6641d8040b0004e006600d00fb8`$_sn:110`$_se:13`$_ss:0`$_st:1657178489879`$vapi_domain:blackrock.com`$ses_id:1657176492977"%"3Bexp-session`$_pn:1"%"3Bexp-session; cleared-old-consent-cookies=; OptanonConsent=isGpcEnabled=0&datestamp=Thu+Jul+07+2022+08"%"3A48"%"3A13+GMT"%"2B0200+(Mitteleurop"%"C3"%"A4ische+Sommerzeit)&version=6.27.0&isIABGlobal=false&hosts=&landingPath=NotLandingPage&groups=C0001"%"3A1"%"2CC0003"%"3A0"%"2CC0002"%"3A0"%"2CC0004"%"3A0&geolocation="%"3B&AwaitingReconsent=false&consentId=4badc4b8-2fd8-4e10-aa31-7f67c8aafda5&interactionCount=0; OptanonAlertBoxClosed=2022-02-25T07:47:10.248Z; AMCV_631FF31455E575197F000101"%"40AdobeOrg=-1303530583"%"7CMCIDTS"%"7C19049"%"7CMCMID"%"7C69911534768528624172266666002894366157"%"7CMCAID"%"7CNONE"%"7CMCOPTOUT-1645782430s"%"7CNONE"%"7CvVersion"%"7C3.3.0; ts-de-retail-locale=de_DE; SSESSIONID_uk-retail01=YWQxOWYyMTgtNTc5Ny00OGY2LThmYjUtOGNjMTMxZmUwNDM1; b71e11317c8db928fe965cfeebd54975=9b12494171fc6d32038a96be85e3233c; NAUTILUS-XSRF-TOKEN=09f27898-1bed-447c-9bd2-5afb94395eb0; c68299fd7efaf68170a7b1f970bcc72f=37f6df3f3363694cb2e8ca59cdb9c35b; AllowAnalytics=false; AMCVS_631FF31455E575197F000101"%"40AdobeOrg=1; blkUserType-one-at=individual; test-cleared-blacklisted-cookies=; ak_bmsc=5EE6391DAFCBC3112E732BE89F0A50E7~000000000000000000000000000000~YAAQnCo1FzHgSNKBAQAALYZq1xAOciLLSIgBwvOj87xdU6b9qe7geT/b7MMcbI8Np53acWjY6bcy4hYZiG1f+mvxA5ZSw0k07DIiZ6Vdn845lbRg2aTZTH2/ysCpxP/Rvk6n2W7NsfZ14Xo7JHz+aMtVuGH9YVgl4NbBqK72quBRw+FKqww0e2oeWNdnQLq4NQhfwk4/TG8t4x6nV9oIzMTdqs80masK/ipUBT2/Gy4/3K0Qs9bqembuMnLT8eM/+OfRoh6rBAqdRwNdwUNP2kBHcN9pmZ0H2ufQslVld+r8bnB7JBf9b8ViCSUAQ11U0JW/bWqatcnHf+3DdNDA2mmtCnYRcCvTxvGZWMZ1tJXlKuZ0ZfVAyefcHa5YOJZfx4FOumopInDwDdXCgg==; bm_sv=0427DB93C7D4AE0667EBF5A6AAC488AA~YAAQnCo1F1MxSdKBAQAAHoFt1xBChDWv0JckMwHoVyX6iAqVrH9vwy0USc8viBmI+7eMibrLn6qEQG0TtudAuSpxq1DUVvuQJgiA9FZ0WRG+53dwwKX3IBCPOkiP4q+Z65mdhPwrM6+cd7+1GFrTW/nQii01xf5sBK+FjzdbjAjz3OA394rU1SEnOyx2u97lgS9+fjbyxZ8ewPIxT2MOcYcgIAlShx1qwI8TUxuCHRLvAnbMndIeT7uGOyRF8Gpd5N0n~1; bm_mi=E5C4CA9E7131BC709BFD76A6141D6363~YAAQnCo1F7DqSNKBAQAAHOZq1xDm2G92/YA9M8vz6V8wNrtQbIByqwkCdBfttev4GaC4o5uaC5BnfcHXVEEdYM08vP+iY3WN+pUF3y8yLVfG+wM3dfz6/8Zc1IpV2Frib5qlhtq+cf7P9R/UsxaeOsvtv5taWUnOQISHck+zR6MOB4oFfiD12sCdMmBtLKYbZZC8Drn6s4H5dky/voB4/EKgJpdrdP1PWJwgScP/NIr6OaRjtWhfR1lhPsi1+OJI4IShdiACkgieukvjB6aVts70QOIW5ftzRfJgXicjUUfHM+V+vWDZYNmQTcdLoIxvbodKU6mmS/H9cT5XRhxB5TZsMa7JZUwssyKuvzkRODLIwdgWDQCFz5lhX8PTZVCYCP816Jb5/uBgYZ4tiDdmH0KDMdKZSU9Wuv4zUjTBgQa5zj3OjybRzdkzKVP+XQ==~1"
-H "Sec-Fetch-Dest: empty"
-H "Sec-Fetch-Mode: cors"
-H "Sec-Fetch-Site: same-origin"
-H "TE: trailers" --data-raw "dcrPath=/templatedata/config/product-screener-v3/data/de/austria/one-at&portfolios=228238-228239-228240-228242-228268-228270-228271-228272-228273-228274-228275-228280-228281-228282-228283-228289-228291-228294-228295-228296-228297-228298-228299-228304-228305-228306-228307-228308-228309-228310-228311-228313-228315-228321-228322-228323-228326-228327-228328-228329-228332-228333-228334-228335-228337-228338-228339-228340-228341-228342-228343-228346-228347-228348-228349-228350-228352-228354-228355-228356-228357-228360-228361-228362-228365-228366-228367-228368-228369-228375-228376.....
Die div. Teile beginnen immer mit -H
Allerdings kenne ich die Bedeutung nicht.
Gem. Deinem Link habe ich mal geschaut. Erhalte aber nur das, wenn ich das mal direkt im CMD ausführen möchte.
curl -d "S:\FIMAN\config\CurlBlackrock_Post.txt" -X [url]https://www.blackrock.com/at/privatanleger/product-screener/product-screener-v3.jsn?type=excel[/url]
curl: no URL specified!
curl: try 'curl --help' for more information
Tschau
Martin
Die Curl lautet allerdings so lange, daher soll diese in eine Datei verlagert und über CURL aufgerufen werden. Für CMD ist das zu lange, ebenfalls für HTTP-Abfrage:
curl "https://www.blackrock.com/at/privatanleger/product-screener/product-screener-v3.jsn?type=excel" -X POST -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0" -H "Accept: application/json, text/plain, /" -H "Accept-Language: de,en-US;q=0.7,en;q=0.3" -H "Accept-Encoding: gzip, deflate, br" -H "Referer: https://www.blackrock.com/at/privatanleger/produkte/product-list" -H "Content-Type: application/x-www-form-urlencoded" -H "Origin: https://www.blackrock.com" -H "Connection: keep-alive" -H "Cookie: STICKY_SESSION_COOKIE_UK_RETAIL01_LIVE=""b62664beee635423""; ts-de-retail-locale=de_DE; s_fid2=3F7DD1BF89045F81-2105CE523D848B20; blkUserType-de-retail=individual; de-retail-recent-funds=237595; ts-one-locale=en_US; s_fid=26D2EB51B0144ED1-0B35A90747922AD4; ts-one-at-locale=de_AT; blkUserType-one-at=individual; _abck=7A6B3509B8B8DDC30A5C0CB5DE52E1800YAAQltlraI1qFp5/AQAAVGGvoAdlsR+DnhCfC6xSqL2fi1w1fF1BbQJOIwpyUofL/MIBLHLWZ8BsSxquZttNMNEd6pZpF85dbc0ad5mAwHoB12lkQpku23l3N11p5RKd1A4L7QCnEkCzOBbgb76pERX7vEj88TcTDoMiBXpBiJtf8c3X/SpIX+LLY8StjlMUhu58neMYK/56gIrSI3J2cxGFl0JyPfTx1H1F4qw9jLgTHnCGq0VdRspqs2GxG8jPJ/XNXpDvHXsbddXyvoejQU5r+OUage1nimvdNdYQqkOZIJ8przs1LjctKW/N8Ig4rOhefEl6Z0t1GQufBQDiC4xhExgWpvGcGTnZitCRJc73nCqV/aawZ9mWGXIP/6j4CRPIrneLTfF84WWfyjssKoQyyB0EFWSO0UZS0||-1||-1; utag_main=v_id:017ec649b8870038f4f0b376fc5a0004e006600d009dc$_sn:27
$_se:4$_ss:0
$_st:1657223506117$vapi_domain:blackrock.com
$ses_id:1657221685270"%"3Bexp-session`$_pn:1"%"3Bexp-session; cleared-old-consent-cookies=; OptanonConsent=isGpcEnabled=0&datestamp=Thu+Jul+07+2022+21"%"3A21"%"3A26+GMT"%"2B0200+(Mitteleurop"%"C3"%"A4ische+Sommerzeit)&version=6.27.0&isIABGlobal=false&hosts=&landingPath=NotLandingPage&groups=C0001"%"3A1"%"2CC0003"%"3A0"%"2CC0002"%"3A0"%"2CC0004"%"3A0&geolocation="%"3B&AwaitingReconsent=false&consentId=f22357d1-3780-4c3d-bd0c-1c6d62f64cc9&interactionCount=0; OptanonAlertBoxClosed=2022-02-26T06:55:53.073Z; AMCV_631FF31455E575197F000101"%"40AdobeOrg=-1303530583"%"7CMCIDTS"%"7C19050"%"7CMCMID"%"7C52307340170082227444897750253089020135"%"7CMCAID"%"7CNONE"%"7CMCOPTOUT-1645865753s"%"7CNONE"%"7CvVersion"%"7C3.3.0; JSESSION_uk-retail01=E241FFC8607E8864970598DA3C60EB5A.03; SSESSIONID_uk-retail-k=ZjVhNjgwZWUtNWEwOC00NjVkLThjNGItNzJmYWRhOTZjZGFh; b71e11317c8db928fe965cfeebd54975=90d3a573e74022e0aed3e22e0265fc3d; c68299fd7efaf68170a7b1f970bcc72f=c9f30c2ba657f6f2fbc9cb760a62fa73; NAUTILUS-XSRF-TOKEN=199399fd-96b7-4a05-9e32-7185c7411311; SSESSIONID_uk-retail01=ZjdkYTllMWQtMTA0OC00ZjE1LWI4Y2MtZWZkMWM3NjhmZTlh; SSESSIONID_uk-retail01=NjE5YzFhNGMtNmY2Zi00MjAxLWI1ZWQtNDk4MTFhMGFjMzk2; AllowAnalytics=false; AMCVS_631FF31455E575197F000101"%"40AdobeOrg=1; ak_bmsc=115A400EFA709BF27958E3D9CAFD6BFF000000000000000000000000000000YAAQYE1lX3WEadeBAQAAl+kc2hDF5B/jxTsJf4jVGM27KSM5h6j4Si6rkJbEG+l/RO3ec9QbBlQzRnAtd8LH9O8UCkRfTMYwA+4ONcewPSHbeYCl0iJ89IKM72b0auNivTNa9kecPNHBvtTSUX3M7lJ1W3Ta7nrpi56/whr+y7GczhVpw5gzuOwlp7f/nlZqgP7eOf714DH5OAglsL8u0ECu4fIUpQRUyHw0lWGcm1kpsg0Z0vp4MmwVxupPGRgiXIeBkWwcpGsUjmvUCCXV55koQx1kMc+lRiXib7XGIQP+9x49Syur9JFz/50Vm1NZCHJyc9xX8sVq+6wcrm0QHAVJiaoKV27TADXlykHPS8jCxvvLoR/SPL9LsQjvO78D5Hwu5oDY0281/p2+hA==; bm_sv=7314F56303BF165EE115A314564A0EF2YAAQYE1lX+qEadeBAQAAWfcc2hCO+/kgqMuv8phnPupTXc/tHVP+cj+53t4O8NksHSonqOcivI11XF5ahYcquFeNwKW4e1iW3LwMW7Zts0xeoZhFEUOOZ5Wp2POwl2XLNFKw9H/a7Wx4HDpcp0l22nL0gTswyeG2zlyCvA5vkTQqagikkLWW7rjz9v8oAJSE/1B1H6cuGBlj+JZcFoU3N7NmadJXpU3GU/oZDTVKnxLsAjMLhRpxmFz6dFcvwiC+1Pu5~1; test-cleared-blacklisted-cookies=" -H "Sec-Fetch-Dest: empty" -H "Sec-Fetch-Mode: cors" -H "Sec-Fetch-Site: same-origin" -H "TE: trailers" --data-raw "dcrPath=/templatedata/config/product-screener-v3/data/de/austria/one-at&portfolios=228238-228239-228240-228242-228268-228270-228271-228272-228273-228274-228275-228280-228281-228282-228283-228289-228291-228294-228295-228296-228297-228298-228299-228304-228305-228306-228307-228308-228309-228310-228311-228313-228315-228321-228322-228323-228326-228327-228328-228329-228332-228333-228334-228335-228337-228338-228339-228340-228341-228342-228343-228346-228347-228348-228349-228350-228352-228354-228355-228356-228357-228360-228361-228362-228365-228366-228367-228368-228369-228375-228376-228377-228378-228379-228383-228384-228385-228390-228393-228395-228396-228397-228398-228399-228400-228401-228402-228403-228404-228408-228409-228410-228411-228414-228415-228417-228418-228419-228421-228422-228423-228424-228425-228426-228427-228428-228429-228430-228434-228435-228437-228438-228439-228464-228466-228468-228470-228471-228472-228473-228475-228476-228477-228478-228479-228481-228482-228483-228484-228485-228486-228487-228488-228497-228498-228499-228501-228502-228503-228505-228506-228507-228508-228512-228513-228518-228519-228520-228521-228522-228523-228524-228525-228526-228528-228529-228530-228531-228532-228534-228536-228537-228538-228539-228540-228541-228542-228543-228546-228547-228548-228549-228550-228551-228552-228556-228557-228558-228559-228560-228563-228564-228565-228566-228567-228571-228573-228574-228575-228576-228578-228579-228581-228583-228585-228586-228588-228589-228590-228591-228592-228593-228595-228596-228597-228598-228603-228604-228605-228606-228607-228608-228609-228610-228611-228612-228613-228614-228617-228619-228620-228621-228622-228623-228626-228627-228628-228629-228630-228631-228632-228633-228634-228635-228636-228637-228638-228639-228640-228641-228642-228643-228644-228648-228651-228652-228653-228654-228655-228656-228657-228658-228659-228660-228665-228669-228674-228675-228676-228677-228678-228679-228690-228691-228692-228693-229019-229020-229021-229022-229024-229027-229028-229029-229030-229031-229032-229033-229042-229043-229044-229045-229046-229050-229051-229052-229055-229056-229057-229059-229060-229061-229062-229063-229064-229065-229066-229067-229068-229069-229070-229071-229072-229076-229077-229078-229079-229080-229081-229082-229085-229086-229087-229090-229091-229092-229095-229096-229097-229098-229099-229100-229101-229105-229106-229107-229108-229109-229110-229111-229112-229113-229114-229115-229116-229118-229121-229123-229124-229125-229127-229128-229129-229130-229131-229132-229133-229134-229135-229136-229138-229139-229141-229143-229147-229150-229158-229159-229160-229165-229166-229169-229171-229175-229177-229178-229179-229181-229182-229185-229189-229190-229191-229194-229195-229196-229197-229199-229200-229201-229202-229203-229208-229209-229277-229279-229280-229281-229283-229284-229285-229286-229289-229290-229291-229293-229295-229296-229297-229298-229299-229300-229301-229302-229309-229313-229319-229320-229321-229322-229323-229324-229325-229326-229327-229328-229330-229331-229332-229333-229334-229335-229336-229337-229338-229340-229341-229342-229343-229344-229345-229347-229348-229349-229351-229352-229355-229356-229399-229404-229405-229406-229407-229412-229444-229445-229446-229449-229450-229474-229475-229476-229477-229478-229547-229550-229551-229552-229556-229557-229558-229560-229561-229562-229563-229564-229565-229566-229570-229571-229572-229573-229576-229577-229578-229582-229583-229584-229587-229588-229589-229590-229591-229596-229597-229598-229601-229604-229605-229606-229607-229610-229611-229612-229613-229617-229618-229621-229636-229637-229638-229639-229640-229641-229642-229644-229645-229646-229648-229649-229650-229651-229653-229654-229655-229656-229659-229661-229662-229665-229666-229673-229674-229677-229678-229682-229684-229685-229687-229690-229692-229693-229694-229696-229698-229700-229702-229703-229704-229705-229706-229707-229712-229724-229725-229726-229727-229728-229729-229730-229731-229732-229733-229734- ....
-> ist nur 30 kb groß ...
Tschau
Martin
Hallo,
ich bin nun auf der Suche für das 2. Problem, d. h. wenn die Parameter über 8k sind, dann geht es mit dem CMD-Befehl nicht mehr.
Ich suche nun eine Lösung, daß ich für den CURL-Befehl die Parameter über eine Datei hinzufüge, allerdings klappt das nicht.
curl -d "c:\Curl.txt"
oder
curl -d "@c:\Curl.txt"
curl <"c:\Curl.txt"
gehen nicht.
Erhalte nur
curl: no URL specified!
curl: try 'curl --help' for more information
Die Hilfeangabe hat leider nicht geholten.
Hat das mal jemand irgendwie geschafft ?
Tschau
Martin
Hallo,
Danke für diese Hinweise, aber diese haben mich nicht weitergebracht.
Bin durch Zufall darauf gestoßen, daß man den Browser die Netzwerkanalyse durchführen kann. Dort sieht man quasi die Quelle zum Download.
Das ist ein CURL-Aufruf.
Das geht direkt in CMD.exe und entsprechend kann die Ausgabe in eine Datei umgeleitet werden.
Mit einem C#-Process kann das dann heruntergeladen und gespeichert werden.
String Command = @"/C "+ PfadCurl + "curl " + CurlLink + " >" + Filename;
Process.Start("cmd.exe", Command);
Bei 2 Fondsanbietern hat es geklappt, bei einem ist die CURL-Adresse zu lang für CMD. Suche noch nach einer Lösung.
Es ist nur eine Lösung für spezielle Fälle, nicht für alles.
Tschau
Martin
klar, eine API wäre eine feine Sache, steht aber nicht zur Verfügung. So waren zumindest deren Aussagen auf Nachfrage.
Ich will auch kein HTML crawlen, nur die vorhandene Excel-Datei erhalten, die für mich quasi hinter einem Button versteckt ist.
Ich weiß nicht, wie ich per Code den Button drücken kann.
Tschau
Martin
Hallo,
ich möchte autom. Dateien von einer Webseite herunterladen, wofür man erst einen Button anklicken muß.
z. B. hier:
https://de.allianzgi.com/de-de/unsere-fonds/fonds/list#
-> Download Daily Nav
oder
https://www.ishares.com/de/privatanleger/de/produkte/etf-investments#!type=emeaIshares&tab=overview&view=list
-> Fondsliste herunterladen -> Alle Fonds herunterladen
Aktuell mache ich das tägl. manuell, möchte das aber automatisieren.
Wie kann ich solche Dateien per C# (.net 4.8, WinForms) herunterladen ?
Tschau
Martin
Hi,
ich löse das nun mit dem ExcelDataReader:
https://github.com/ExcelDataReader/ExcelDataReader
Tschau
Martin
Hallo,
ich möchte XLS/XLSX-Dateien zu CSV konvertieren.
Habe dazu etwas gefunden und es ist relativ gut, aber bei manchen Excel-Dateien, wir die erste Zeile nicht erkannt/ausgelesen.
C# .NET - Convert Excel 2007 (XLSX) to CSV using OLE DB
Da wird alles ausgelesen, außer der 1. Zeile:
//Fill the dataset with information from the Sheet 1 worksheet.
var adapter1 = new OleDbDataAdapter("SELECT * FROM [" + worksheetName + "]", connectionString);
var ds = new DataSet();
adapter1.Fill(ds, "results");
DataTable data = ds.Tables["results"];
//Show all columns
for (int i = 0; i < data.Rows.Count - 1; i++)
{
for (int j = 0; j < data.Columns.Count; j++)
Console.Write("\"" + data.Rows[i].ItemArray[j] + "\";");
Console.WriteLine();
}
Welchen Gedankenfehler habe ich hier drin, den ich übersehe ?
Tschau
Martin
Hi,
das mit dem Datumsprüfen kann ich irgendwie abhaken, egal ob Casten oder Parse oder ähnl.
Habe Zahlenwerte, z. B. 8,1943 und diese werden als August 1943 erkannt, oder 12.5432 die als Dezember 5432 erkannt werden.
Habe es anders gelöst, in dem ich angebe, nach welcher Art eine Spalte sortiert werden soll: Text, Zahl oder Datum.
In meinen Tabellen verwende ich keinen Mischbetrieb, d. h. ich entscheide welche Art (s.v.) es ist. Eine autom. Erkennung ist irgendwann fehlerbehaftet.
Danke für die Unterstützungen.
Tschau
Martin
muß es doch etwas umständlicher machen, als gedacht:
else if (Double.TryParse(inhalt, out TestZahl))
{
// Werte als Double vergleichen
double vx = double.Parse(((ListViewItem)x).SubItems[col].Text);
double vy = double.Parse(((ListViewItem)y).SubItems[col].Text);
result = vx.CompareTo(vy);
}
Geht das auch eleganter ?
Hallo Abt,
die Erkennung über den Typ habe ich. Allerdings geht das mit dem Compare nicht, gibt es nicht für int bzw. double. Es gibt nur CompareTo. Das klappt allerdings auch nicht.
else if (Double.TryParse(inhalt, out TestZahl))
{
// Werte als string vergleichen
result = (((ListViewItem)x).SubItems[col].Text.CompareTo(((ListViewItem)y).SubItems[col].Text));
}
Haste noch einen Tipp für mich ?
Tschau
Martin