Du kannst das gern optimieren und unrollen etc. Fakt ist das ich in der Realität keinen Unterschied von memcmp, oder einer simplen Loop mit int* oder int64* sehe. Alles quasi gleich schnell. Und zwar so extrem schnell das ich den Fall mit "einmal lesen" kaum sinnvoll messen kann. Es kann nicht daran liegen und ich bezweifle stark das die Vergleichsschleife irgendwie substantiell schneller wird. Und Ich stelle es mir schwer vor die Schleife so umzuschreiben, das die ALU so voll ist, das nicht mehr jeden oder fast Cycle die maximale Anzahl loads gemacht wird - ausser man macht das absichtlich schlecht. Nur zur Erinnerung hast du vorhin noch behauptet das wegen irgendwelchen Dependencies ja nur aller 2-3 Cycle ein Load wäre.
Nun habe ich die Lösung gefunden, sie ist völlig analog zu C++ und Delphi, und liefert die komplette Kommandozeile in einem String, den man dann selbst analysieren muss.
Das von mir gesuchte Ergebnis ist
string cl = Environment.CommandLine;
Hier der Test-Code
string cl = Environment.CommandLine;
string[] CommandLineArgs = Environment.GetCommandLineArgs();
AnzPara = CommandLineArgs.Length;
string iPar = "";
PutLst(" ");
PutLst("cl=" + cl);
PutLst(" ");
for (int i = 0; i < AnzPara; i++)
{
iPar = CommandLineArgs[i];
PutLst(i.ToString()+" .) "+iPar);
}
und das Ergebnis:
cl="D:\VC20xx\HKcs\CompHK\bin\Debug\CompHK.exe" /H /? "Y:\##x\a b c\" "Y:\##x\a b c\" /A /U /M:3
0.) D:\VC20xx\HKcs\CompHK\bin\Debug\CompHK.exe
1.) /H
2.) /?
3.) Y:\##x\a b c" Y:\##x\a
4.) b
5.) c"
6.) /A
7.) /U
8.) /M:3
hi could you held me solvins this problem
iam coding a program that make desactivate a search function ( button)
when the text is empty or the file pfad ist not correct but u got this mistake
System.NullReferenceException means the button search was "null"
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent()
}
private void TbSearch_TextChanged(object sender, TextChangedEventArgs e)
{
if(tbSearch.Text== null)
btnSearching.IsEnabled = false;
else btnSearching.IsEnabled= true;
return;
}
private void tbnPfad_TextChanged( object sender, TextChangedEventArgs e)
{
if(!Directory.Exists(tbnPfad.Text))
btnSearch.IsEnabled = false;
else btnSearch = true;
return;
}
}
In meinem Programm wird ein anderes aufgerufen, hier der Code dazu
string mPGM = ArrAlbum[iNr].albP20 ; // Lw:\Pfad\Programmname
string mPARA = ArrAlbum[iNr].albP21; // Parameter
Process M = new Process();
M.StartInfo.FileName = mPGM;
M.StartInfo.Arguments = mPARA;
M.StartInfo.UseShellExecute = false;
M.StartInfo.RedirectStandardError = false;
M.StartInfo.RedirectStandardOutput = false;
M.StartInfo.RedirectStandardInput = false;
M.StartInfo.Verb = "runas";
M.Start(); // <== Hier kommt der Fehler
M.WaitForExit();
Im Debug-Modus kommt diese Fehlermeldung bei M.Start();
System.ComponentModel.Win32Exception:
Der angeforderte Vorgang erfordert erhöhte Rechte.
Wenn ich das Programm mit "Als Administrator" starte, kommt die Meldung nicht.
Auch wenn ich VS2019 "Als Administrator" und darüber im Debug-Modus das Programm ausführe, ist alles OK.
Wenn ich im Release-Modus arbeite, kommt der Fehler ebenfalls nicht.
Es muss also dieser Aufruf eines anderen Programmes in Verbindung mit Debug die Ursache sein.
Kann man da irgendwo etwas einstellen ? Oder ist das einfach so ?
Nachtrag 10:32 ----
Ich habe die Debug-Version des Programmes in anderen Windows-Versionen getestet:
WinXP: funktioniert
Win7: funktioniert
Win8.1: es kommt die Fehlermeldung
Das Benutzerkonto ist Administrator und hat die Rechte auf "nie benachrichtigen", also Schieberegler steht ganz unten.
@hkdd sagte in Richtextbox im Formular verankern.:
@Jockelx
Margin - alle Werte stehen auf 3
Scherzkeks. Ich meinte, ob du margin-top mal auf 50 oder so gesetzt hast, statt mit top und ClientSizeChanged zu arbeiten.
(Ernste Frage, keine Ahnung wie sich Win-Forms da so verhält)
Nur ganz kurz zum Fehler: Im meinem fehlerhaften Programm werden zwei Objektinstanzen von UserControl1 erstellt. Einmal: UserControl1 us = new UserControl1(); und eh.Child = new UserControl1(); Auf dem zweiten Objekt, das an eh.Child gebunden wird, wird nicht Funktion1() aufgerufen, so dass das Panel nicht rot gefärbt wird. Funktion1() wird nur für das erste Objekt aufgerufen, und dies ist nicht das Objekt, das an eh.Child gebunden wurde. Es muss nicht heissen: eh.Child = new UserControl1();, sondern eh.Child = us; Deinen ersten Beitrag habe ich nicht gleich verstanden, aber schön, dass das ganze funktioniert. Da ich WinForms gegenüber WPF bevorzuge, kann ich mit WinForms nun auch 3D Graphik machen. Nochmals Danke Euch !!!
Glaube ich nicht, sieht so aus als wenn du bestenfalls 100% Speicherbandbreite ausnutzen könntest. Hab aber nicht komplett verstanden, was das sein soll.
@hkdd
Ich hab den von dir gezeigten Code mit dem PDF Printer probiert, da kann man die Seiten schon einstellen. Nur wird halt trotzdem alles gedruckt. Sieht so aus als müsse sich das PrintDocument (bzw. dessen PrintPage Event Handler) selbst darum kümmern dass nur das gedruckt wird was eingestellt wurde.
@AndyDD sagte in Stringfunktionen Char.IsSymbol():
min. Passwortlänge 8 Stellen, aus Buchstaben, Ziffern, Groß- und Kleinschreibung, Sonderzeichen 3 Merkmale, keine Pattern, kein Vorname, Nachname, Anmeldename als Bestandteil. Und die Härte: Passwortlebensdauer 40 Tage sowie keine Übereinstimmung mit den letzten 3 Passwörtern. Das ist echt überholt aber wenn wir es nicht umsetzen gibts keine Freigabe. Habe erst kürzlich einen Artikel gelesen, wo stand, dass die Vergrößerung der Anzahl der Zeichen mehr bringt als Groß-/Kleinschreibung, Sonderzeichen etc.
So ist es. Unsafe by design, denn nun ist jeder Nutzer gezwungen, ein einfaches 7-Zeichen Passwort zu haben, mit einem 8. Zeichen, dass er alle 40 Tage um 1 hochzählt. Aber ich verstehe schon von woher du kommst mit der Zertifizierung. Kein Vorwurf an dich, sondern Mitleid.
@Dravere ,
ich habe mal beide Lösungen gemeinsam getestet, es gibt die gleichen Ergebnisse. Deine Lösung ist eleganter und ohne unsicheren Code. Danke für die Hinweise
-----------HexToDecimal-----------
HexString=112233445566778899AABBCC
Decimal-hkdd =5302590746052724293842418636
Decimal-Dravere=5302590746052724293842418636
---------DecimalToHex-(1)---------
decimal=123456789012345678901234
HexStr-hkdd =1A249B1F10A06C96AFF2
HexStr-Dravere=1A249B1F10A06C96AFF2
---------DecimalToHex-(2)---------
decimal=1234
HexStr-hkdd =4D2
HexStr-Dravere=4D2
---------DecimalToHex-(3)---------
decimal=1234,00
HexStr-hkdd =4D2
HexStr-Dravere=4D2
---------DecimalToHex-(4)---------
decimal=1234,5678
HexStr-hkdd =4D2
HexStr-Dravere=4D2
@Swordfish
Hallo Swordfish,
Das mit dem Crosslink wusste ich nicht.
Mache ich das nächste mal.
Einen Supporvertrag gib es natürlich auch nicht.
Aber wenn ein Problem gelöst ist, woher auch immer, dann setze ich die Lösung auch in die anderen Threads.
Aber inzwischen bin ich selbst einen Schritt weiter gekommen.
Habe wohl auch etwas treffendere Suchbegriffe verwendet.
Z.B.: https://social.msdn.microsoft.com/Forums/windows/en-US/7471dd6e-aced-4131-875b-ff2c645adbd9/how-to-disable-editing-in-the-existing-rows-in-a-datagridview-and-allow-the-user-to-add-new-row-to?forum=winformsdatacontrols
protected void Gv_Condition_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView gv = (GridView)sender;
GridViewRow gvr = gv.Rows[e.NewEditIndex];
e.Cancel = true;
Pn_UpdateCondition.Visible = true;
TableCell tc = gvr.Cells[0];
tc = gvr.Cells[1];
.....
Ich habe das "e.Cancel = true;" in die Function reingesetzt.
Nun geht es wieder.
Es ist schon sau blöd, wenn gleich drei Fehler hintereinander geschaltet sind.
Zunächst hatte ich nur Angaben für die Definition des Gridview im aspx gefunden, wo nur der Parameter AutoGenerateColumns="False" angegeben wurde.
Und auch lange Zeit nichts weiter dazu.
Das hatte wohl unter .net 2.0 gereicht.
Warum sich Microsoft keine besseren und von vornherein eindeutigere Definitionen und Funktionen einfallen lässt bleibt mir schleierhaft.
Vielen Dank noch an alle, die sich durch meine Quelltexte gelesen hatten.
Grüsse
Helmut
Nach tagelangem Suchen, und auch mit Burkhis Hinweis, habe ich es nun doch hinbekommen.
Folgende Anpassungen.
In der" web.config":
<pages clientIDMode="Static">
Ich habe den clientIDModeergänzt. am Textfeld habe ich nichts geändert.
In der "page.master" habe ich die neue Function wie folgt ausgelegt:
function ProcessChildMessage(message) {
var pos = message.lastIndexOf("$");
if (pos >= 0) {
var fieldvalue = message.substr(pos + 1);
var pos2 = fieldvalue.lastIndexOf("=");
if (pos2 > 0) {
var myfield = fieldvalue.substr(0, pos2);
var myvalue = fieldvalue.substr(pos2 + 1);
document.getElementById(myfield).value = myvalue;
} else {
alert(fieldvalue);
}
} else {
alert(message);
}
return true;
}
Die alte Methode, die Werte zu übergeben habe ich fallen lassen.
Danke nochmals für eure Antworten.
Grüsse
Helmut
Inzwischen bin ich etwas klüger geworden.
Musste dazu eben nochmal 20 oder 30 Stunden investieren.
Dabei hat mir dann mein anderer Thread mit dem DatePicker geholfen.
Also leider keine Hilfe von euch.
Ich habs selber raus bekommen, mit Hilfe von
https://weblogs.asp.net/scottgu/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series
und etwas durch die Beiträge im anderen Thread.
Ich habe folgende Anpassungen gemacht.
In der web.config:
<pages clientIDMode="Static">
In der page.master:
function deleteCondition()
{
var ans;
ans=window.confirm('Möchten Sie diesen Zustand wirlich löschen?');
if (ans==true)
{
document.getElementById('hdnbox').value = 'Yes';
}
else
{
document.getElementById('hdnbox').value = 'Yes';
}
return false;
}
```Also über "getElementById"
Aber vielen Dank an alle.
So wie du den StreamReader instanzierst muss die Quelldatei (vonBank.csv) im UTF-8-Format vorliegen. In C# selbst sind dann alle Strings sowieso UTF16, das ist nicht änderbar und auch keine gute Idee daran herumzuwerken.
Dein File scheint aber nicht als UTF-8 vorzuliegen, sonst müsste im Hex-Code für ein "ä" "c3 a4" stehen. Finde raus mit welchem Encoding deine Bank das File ablegt (versuch bspw. mal ISO-8859-1) und gib dann dieses Encoding beim StreamReader an.
MfG SideWinder
Edit: das kommt davon wenn man Tabs aufmacht und nicht refreshed vor dem Antworten.....