Danke Abt,
habe mich da wahrscheinlich unguenstig ausgedrueckt. Ich werde mir den Artikel zu Gemuete fuehren!
Danke fuer das Feedback.
Hallo zusammen,
ich brauchte an unterschiedlichsten Stellen eien Funktion die alle Dateien in einem Verzeichniss mit Suchen und Ersetzen bearbeitet.
Ich habe das dann meistens recht naiv so geloest:
foreach (string file in Directory.GetFiles(pathSrc))
{
if (file.EndsWith(fileExtension))
{
using (StreamReader reader = new StreamReader(new FileStream(file, FileMode.Open, FileAccess.Read)))
content = reader.ReadToEnd();
content = content.Replace(search, replace);
using (StreamWriter writer = new StreamWriter(new FileStream(file, FileMode.Create, FileAccess.Write)))
writer.Write(content);
}
}
Wuerdet Ihr hier auch den Weg gehen den Reader/Writer bei jeder Datei neu zu erstellen oder z.B. nur den entsprechneden Stream tauschen?
Viele Gruesse
EifelYeti
Codeprojekt hat mir geholfen..
Verbindung aufbauen: Connection to SAP from Visual Studio 2008 with SAP.NET Connector 2.0
Tabelle Lesen: Read Tables from SAP R/3 using SAP.NET Connector
und wieso geht das auf diese weise nich?
Das wird dir hier erklärt: C# Parameter passing (what is a reference type)
*edit ref war eine ungünstige Abkürzung für reference...
Hallo Geaz,
beim öffenen deiner Anwenung erhalte ich im Log leider immer einen Fehler.
Fehlermeldung:
2014-04-11 15:03:54,989: ERROR – System.IO.FileLoadException: Die Datei oder Assembly "System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes" oder eine Abhängigkeit davon wurde nicht gefunden. Der angegebene Assemblyname oder die Codebasis ist ungültig. (Ausnahme von HRESULT: 0x80131047)
Dateiname: "System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes"
bei Autofac.Builder.RegistrationData..ctor(Service defaultService)
bei Autofac.Builder.RegistrationBuilder`3..ctor(Service defaultService, TActivatorData activatorData, TRegistrationStyle style)
bei Autofac.Builder.RegistrationBuilder.ForTypeTImplementer
bei Autofac.RegistrationExtensions.RegisterType[TImplementer](ContainerBuilder builder)
bei SharpDox.Core.ContainerConfig.RegisterLocalStrings()
bei SharpDox.Core.ContainerConfig.RegisterDefaultComponents()
bei SharpDox.Core.ContainerConfig..ctor()
bei SharpDox.Core.BootStrapper.BuildDIContainer()
bei SharpDox.Core.BootStrapper..ctor(String[] args)
bei SharpDox.Core.AppEntry.Main(String[] args)
Gibt es alternativen?
Zu Windows XP - natürlich 😉
Hast du Statt :
s.XValueType = ChartValueType.Time;
mal
s.XValueType = ChartValueType.DateTimeOffset;
versucht?
Zudem noch einmal der Hinweis auf: [Hinweis] Wie poste ich richtig?
- Nicht gleich pushen, nicht drängeln
Gibt es einen Grund das du die X Achseneinschränkung auf Datetime auskommentiert hast?
s.ChartType = SeriesChartType.Line; //chart1.Series[0].XValueType = ChartValueType.DateTime; //dadurch ist auf der x-achse das Date and Time s.XValueType = ChartValueType.DateTime; int[] HighValue = new int[FrmReadIn.LineCounter]; //soviele high werte wie der LineCounter gezählt hat evtl -1 // DateTime dt = new DateTime();
Edit: Formatierung
Bei dir werden wohl alle Punkte auf einer Ebene hängen.
Du fügst den Punkt ja mit :
s.Points.AddXY(dt, 1);
hinzu. Aber dein "dt" ist immer new Datetime().
DateTime dt = new DateTime();
deine schleife wäre wohl besser wenn du
for (int i = 0; i < FrmReadIn.LineCounter; i++)
{
HighValue[i] = 1;
Int32.TryParse(FrmReadIn.YearNew[i], out YearI); //Eingegebenen Wert in Int umwandeln
Int32.TryParse(FrmReadIn.MonthNew[i], out MonthI);
Int32.TryParse(FrmReadIn.DayNew[i], out DayI);
Int32.TryParse(FrmReadIn.HourNew[i], out HourI);
Int32.TryParse(FrmReadIn.MinNew[i], out MinI);
Int32.TryParse(FrmReadIn.SecNew[i], out SecI);
Int32.TryParse(FrmReadIn.MsecNew[i], out MSecI);
dt = new DateTime(YearI,MonthI,DayI,HourI,MinI,SecI,MSecI);
s.Points.AddXY(dt, info[i]);
}
verwenden würdest. Noch besser natürlich wenn du gleich mit Datetime arbeiten würdest
Ja die Kollegen kommen bei mir auch dazu, denn so kann ich in meinem Team verbleiben.
Ich danke euch allen für eure Hilfestellungen. Ich habe, neben meiner Frage hier im Forum, auch in meinem Team gefragt welches mir schon einige Bücher auf den Tisch gelegt haben. Diese werde ich jetzt durcharbeiten und meine Erfahrungen dann in Buchempfehlungen preisgeben 😄
Über die Struktur von SAP habe ich mir bis jetzt wohl wirklich wenig Gedanken gemacht. Das werde ich aufjedenfall ebenfalls nachhohlen.
Danke für eure Hilfe und Mühen
Hallo Comunity,
auch wenn ich gerne weiter in C# Programmieren möchte zieht es mich - nicht zu letzt auch des schnöden Mammons willens - doch zu ABAP.
Bei meiner Forum/Google Suche habe ich leider nur einen Thread in die entgegengesetzte Richtung gefunden.(naja zumindest in etwa in die entgegengesetzte Richtung)
Welche Ausbildung/Zertifizierung ist nötig, um beruflich von ABAP/SAP zu C#./NET wechseln zu können?
Hat hier jemand eventuell ein Tutorial zum Umstieg von an der Hand oder glaubt ihr lieber gleich nocheinmal alles von Grundauf lernen (was ohnehin noch ansteht)
Vielen Dank für das super Tutorial. Immer wenn mir RegEx mal wieder über den Weg läuft zieht es mich hier hin 😉
Um RegEx "spielerisch" zu Lernen kann ich noch RegEx-Golf empfehlen:
Ziel ist es mit möglichts kurzen Statements alle nötigen Ausdrücke zu matchen, und die unnötigen Ausdrücke auszuschließen.
Siehe Strategy pattern.
Du hast eine "Basisklasse" in der du einfach nur die Leeren Methoden hast. Hier ist noch keine Funktion gegeben.
Dann implementierst du die Funktionen in deinen Klassen. KlasseA und KlasseB
im Code verwendest du dann später:
Basisklasse variabeleKlasse = new KlasseA();
Wenn du jetzt dem Objekt aber lieber eine Instanz der KlasseB geben möchtest kannst du:
variableKlasse = new KlasseB();
verwenden.
DONE!
installier doch mal den neusten SAP GUI, damit sollte das Problem behoben sein.
Danke punkdevil!
Ich habe eben die Erlaubniss bekommen die SAP Gui zu installieren und schon ist das Problem behoben!
Danke auch allen anderen Helfern für eure Nachsicht und Lösungsansätze. Und den Umgang mit dem DependencyWalker hab ich sicher nicht umsonst gelernt!
-EifelYeti-
Danke für die Links Abt! Ich denke ich hätte da auch wirklich etwas intensiver nach einer Downloadmöglichkeit suchen können - sorry. Hatte mich da wohl etwas zu sehr auf die Entwicklerseite festgeschossen.
Leider komme ich trotzdem nicht wirklich weiter.
Ich habe mir mit dem DependencyWalker die einzelnen Abhängigkeiten anzeigen lassen und die fehlenden Dateien nachkopiert. Zudem habe ich mein Programm einfach mal in den Dependencywalker geschmissen und ein Profiel erstellen lassen:
Fehlermeldung:
00:00:48.656: Loaded "c:\windows\assembly\nativeimages_v2.0.50727_32\system.web\50ea744ffc3cb7f09b027fd6c5c93b2b\SYSTEM.WEB.NI.DLL" at address 0x65F20000 by thread 7.
00:01:01.875: Loaded "" at address 0x10000000 by thread 7.
00:01:02.000: Unloaded "" at address 0x10000000 by thread 7.
00:01:02.078: Loaded "c:\ftc\SAPNCO_UTILS.DLL" at address 0x10000000 by thread 7.00:01:07.562: LDR: LdrpWalkImportDescriptor() failed to probe c:\ftc\sapnco_utils.dll for its manifest, ntstatus 0xc0150002
00:01:07.656: Unloaded "c:\ftc\SAPNCO_UTILS.DLL" at address 0x10000000 by thread 7.
Damit habe ich dann mal ein wenig gegoogelt und bin auf die Windows Ereigniss anzeige hingewiesen worden. Hier kommen bei jedem Programmstart 3 Fehler:> Fehlermeldung:
Ereignistyp: Fehler
Ereignisquelle: SideBySide
Ereigniskategorie: Keine
Ereigniskennung: 32
Datum: 13.11.2013
Zeit: 14:15:48
Benutzer: Nicht zutreffend
Computer: FC008204
Beschreibung:
Abhängige Assemblierung "Microsoft.VC80.CRT" konnte nicht gefunden werden. "Last Error": Die referenzierte Assemblierung ist nicht auf dem Computer installiert.Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter
> .2.Ereignistyp: Fehler
Ereignisquelle: SideBySide
Ereigniskategorie: Keine
Ereigniskennung: 59
Datum: 13.11.2013
Zeit: 14:15:48
Benutzer: Nicht zutreffend
Computer: FC008204
Beschreibung:
Resolve Partial Assembly ist für Microsoft.VC80.CRT fehlgeschlagen. Referenzfehlermeldung: Die referenzierte Assemblierung ist nicht auf dem Computer installiert.
.Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter
> .3.Ereignistyp: Fehler
Ereignisquelle: SideBySide
Ereigniskategorie: Keine
Ereigniskennung: 59
Datum: 13.11.2013
Zeit: 14:15:48
Benutzer: Nicht zutreffend
Computer: FC008204
Beschreibung:
Generate Activation Context ist für C:\FTC\sapnco_utils.dll fehlgeschlagen. Referenzfehlermeldung: Der Vorgang wurde erfolgreich beendet.
.Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter
> .
Diese Fehler, ins besondere der erste, sagen aus das die C++ redistributable Version installiert werden muss. Undzwar die 2005er Version. Das habe ich jetzt gemacht, sowie auch alle anderen die mir einfallen. Ich habe jetzt auch fast alle kobinationen aus Framework und Redistributable C++ Versionen durch, aber leider will nichts davon Funktionieren.
Ich hoffe ich überanspruche eure Hilfe hier nicht, aber habt ihr eventuell noch einen Denkanstoß für mich?
Ich kann auch gerne das gesammte Profiel anhängen, was allerdings sehr groß (~700 Zeilen) ist. Deswegen habe hier nur einen Ausschnitt angehängt.
Okay, leider kann ich schlecht nachvollziehen weche Abhängigkeiten die DLL hat.
Online wird immer auf den DependencyWalker verwiesen. Siehe : Google suche Nach dll abhängigkeiten prüfen. Leider ist die Seite http://www.dependencywalker.com/ wohl offensichtlich offline 😦
Gibt es noch andere Möglichkeiten die mir gerade nicht einfallen? In der Exception wird leider auch nicht mehr bekannt.
-EifelYeti-
Hallo herbivore, hallo punkdevil
Ja ich denke auch das die gesammte Fehlermeldung wohl daher rührt das die Datei nicht gefunden werden kann. Allerdings hab ich "lokal kopieren" an und die datei liegt auch im gleichen Verzeichnis wie die .exe mit genau diesem Namen(sapnco_utils.dll). Version stimmt auch überein. Die Berechtigungen sind ebenfalls vorhanden, wobei hier ja auch die Fehlermeldung eine andere wäre...
Die SAP Gui ist allerdings weder bei meinem Rechner, noch bei dem Clientpc aktuell installiert. Lediglich die librfc.dll's wurden in den system32 Ordner verschoben. Ich werde allerdings nachfragen ob ich zum testen SAP lokal installieren darf / kann.
Hallo Experten,
Ich habe vor einiger Zeit ein Programm geschreiben weches Messwerte in unser SAP System überträgt. Hierzu werden verschiedene SAP DLLs benutzt.
In meinem Urlaub, wann auch sonst..., ist jetzt scheinbar Irgentetwas an dem PC des Clients geändert worden, wodurch die folgende Exeption geworfen wird:> Fehlermeldung:
Daten konnten nicht gelesen werden
Der Typeninitialisierer für SAP.Middleware.Connector.RfcDestinationManager hat eine Ausnahme verursacht.
Ich habe mir dann einmal Rekursiv die (inner)Exceptions anzeigen lassen.
Hierbei von Innen nach aussen, also die Innerste Exception zuerst:> Fehlermeldung:
System.Runtime.InteropServices.COMException (0x800736B1): Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Ausnahme von HRESULT: 0x800736B1)
Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Ausnahme von HRESULT: 0x800736B1)System.Collections.ListDictionaryInternal
System.IO.FileLoadException: Die Datei oder Assembly sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23 oder eine Abhängigkeit davon wurde nicht gefunden. Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Ausnahme von HRESULT: 0x800736B1)
Dateiname: sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23 ---> System.Runtime.InteropServices.COMException (0x800736B1): Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Ausnahme von HRESULT: 0x800736B1)
bei SAP.Middleware.Connector.RfcConfigParameters..cctor()Die Datei oder Assembly sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23 oder eine Abhängigkeit davon wurde nicht gefunden. Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Ausnahme von HRESULT: 0x800736B1) sapnco System.Collections.ListDictionaryInternal bei SAP.Middleware.Connector.RfcConfigParameters..cctor()
System.TypeInitializationException: Der Typeninitialisierer für SAP.Middleware.Connector.RfcConfigParameters hat eine Ausnahme verursacht. ---> System.IO.FileLoadException: Die Datei oder Assembly sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23 oder eine Abhängigkeit davon wurde nicht gefunden. Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Ausnahme von HRESULT: 0x800736B1)
Dateiname: sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23 ---> System.Runtime.InteropServices.COMException (0x800736B1): Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Ausnahme von HRESULT: 0x800736B1)
bei SAP.Middleware.Connector.RfcConfigParameters..cctor()--- Ende der internen Ausnahmestapelüberwachung ---
bei SAP.Middleware.Connector.RfcConfigParameters.Initialize()
bei SAP.Middleware.Connector.RfcDestinationManager..cctor()
Der Typeninitialisierer für SAP.Middleware.Connector.RfcConfigParameters hat eine Ausnahme verursacht.
sapnco
System.Collections.ListDictionaryInternal
bei SAP.Middleware.Connector.RfcConfigParameters.Initialize()
bei SAP.Middleware.Connector.RfcDestinationManager..cctor()
System.TypeInitializationException: Der Typeninitialisierer für SAP.Middleware.Connector.RfcDestinationManager hat eine Ausnahme verursacht. ---> System.TypeInitializationException: Der Typeninitialisierer für SAP.Middleware.Connector.RfcConfigParameters hat eine Ausnahme verursacht. ---> System.IO.FileLoadException: Die Datei oder Assembly sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23 oder eine Abhängigkeit davon wurde nicht gefunden. Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Ausnahme von HRESULT: 0x800736B1)
Dateiname: sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23 ---> System.Runtime.InteropServices.COMException (0x800736B1): Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Ausnahme von HRESULT: 0x800736B1)
bei SAP.Middleware.Connector.RfcConfigParameters..cctor()--- Ende der internen Ausnahmestapelüberwachung ---
bei SAP.Middleware.Connector.RfcConfigParameters.Initialize()
bei SAP.Middleware.Connector.RfcDestinationManager..cctor()
--- Ende der internen Ausnahmestapelüberwachung ---
bei SAP.Middleware.Connector.RfcDestinationManager.GetDestination(String destinationName)
bei Luftfilter.SAP.GetGehaueseNr()
Der Typeninitialisierer für SAP.Middleware.Connector.RfcDestinationManager hat eine Ausnahme verursacht.
sapnco
System.Collections.ListDictionaryInternal
bei SAP.Middleware.Connector.RfcDestinationManager.GetDestination(String destinationName)
bei Luftfilter.SAP.GetGehaueseNr()
Als nächstes bin ich, meiner Meinung nach, allen Punkten aus: [FAQ] Programm läuft in anderer Umgebung nicht (richtig) nachgegangen. Ich habe die DLLs erneut kopiert und auch das Framework "repariert".
Einen Unterschied kann ich leider nicht beheben. Ich verwende Windows7 der ClientPC WindowsXP. Das war allerdings ja auch vorher bereits der Fall.
Der "Codeblock" in dem der Fehler auftritt ist:
try
{
rfcDest = RfcDestinationManager.GetDestination("P04");
rfcRep = rfcDest.Repository;
}
catch (Exception e)
{
printInnerExeption(e);
}
Allerdings ist dies auch einfach das erste Mal in dem eine Verbindung aufgebaut werden soll.
Die verwendeten SAP DLLs sind:
rscp4n.dll
SAP.Connector.dll
sapnco.dll
sapnco_utils.dll
Ich hoffe ihr habt noch eine Idee!
Vorab bereits vielen Dank
-EifelYeti-
pfad = "\"" + deinpfaditem +"\"";
Bei der Googlesuche findet man den Fehler bei Excel interop MissingMethodException.
Hier wird empfohlen das Zielframework von 4.5 auf 4.0 zu stellen... Ich weiß allerdings nicht in wie weit dich das bei deiner Anwendung einschränkt...
Versuch mal in Excel die Einstellungen zu ändern, teilweise hackts auch einfach nur daran:
Unter:
--> Extras
--> Optionen
--> Register: 'Allgemein'
--> [ ] Andere Anwendungen ignorieren.
Diese Einstellung steuert die DDE-Verbindungen zu Excel, welche auch vom Explorer verwendet werden, wenn Du auf eine .xls-Datei doppelklickst.
Huch das habe ich nicht geprüft, Danke! 😃 Hatte nur gemerkt das es in 2010 nicht klappt.
Ich habe meinen Beitrag entsprechend geändert.
Für die jenigen die nur in der Expressversion von Visual Studio [2010 oder tiefer] arbeiten, gibt es die Möglichkeit der bedingten Haltepunkte (Conditional Breakpoints) nicht von Haus aus.
Allerdings kann man sich mit:
#if DEBUG
if( i == 0 ) System.Diagnostics.Debugger.Break();
#endif
seinen eigenen Conditional Breakpoint bauen.
Da XML ja einer Baumstruktur ähnelt würde ich Rekursion empfehlen
Also so wie ich das weis ist ALT + BACKSPACE unter Windows wie STRG + Z.
Ich weis allerdings nicht ob das dann auch gesperrt ist
Für die Suche nach den Dateien wird dich der System.IO Namspace sicherlich weiter bringen.
Insbesondere:
Directory
FileInfo
Ansonsten ist es aber auch gern gesehen wenn du vorher einmal den Artikel : [Hinweis] Wie poste ich richtig? durchließt.
Insbesondere 1.1 und 5
Auch wenn das jetzt ziemlich spät kommt möchte ich nicht versäumen noch meine Lösung zu Posten:
Ordner gelöscht, alles Okay. Hin und wieder sieht man den Wald vor lauter Bäumen nicht mehr..
Bitte besonders Punkt 5 beachten:
[Hinweis] Wie poste ich richtig?
Wenn ihr keine Fehler- oder Exceptionmeldung bekommt, beschreibt das Fehlverhalten möglichst genau. Mit "funktioniert nicht" alleine ist uns leider nicht geholfen; genausowenig mit "verstehe ich nicht". Bitte schreibt genau, was ihr probiert habt; was ihr nicht versteht und stellt konkrete Fragen. Wenn etwas nicht funktioniert, beschreibt sowohl den IST- als auch den SOLL-Zustand.
Hast du denn einfach mal gedebuggt was in sound drin steht ?
Zudem schreibt man nicht :
if(sound ==false)
sondern
if(!sound)
siehe [Tipp] Anfängerfehler == true / == false
Und Crossposts sind hier nicht so gern gesehen..
Sound ausschalten bei Bildschirmschoner (DirectX.AudioVideoPlayback)
Hallo,
ich bin immernoch bei der Dropbox.. Ich finde die Bedinung ziemlich komfortabel und die Unterstüzung auf mobilen Platformen ist auch super (zumindest auf Android Tablet / Smartphone)
Für private Daten die ich in die Cloud lege, nutze ich dann mit Dropbox zusätzlich BoxCryptor. Ich muss allerdings sagen, das ich Dropbox seit Anfang an nutze und bis jetzt auch noch keinen Grund gesehen habe zu wechseln 😃 Also kann ich nichts über Vergleichsangebote sagen..
Ach und bei Dropbox gab es mal eine Aktion, das wenn man 5GB fotos hochläd, 5GB freier Speicher hinzu kommen. Ich weiss nicht ob es das noch gibt, aber so währst du auf jedenfall schon mal bei 7GB 😉 (Fotos dann natürlich wieder löschen 😄)
So ich hole den Thread auch noch mal aus der Versenkung.
Ich muss mich hier auch nocheinmal ausdrücklich beim Team, und aber auch der Community bedanken für diese unglaubliche Ansammlung von Wissen!
Und vorallem: Es ist frei zugänglich! Ich habe mich hier angemeldet, weil ich hier auch als Gast, alle Bilder / Links / Beiträge sehen konnte, und das verstecken von eben solchen auf anderen Foren (ich glaube ich muss hier keine Beispiele nennen, da jeder mindestens 3 kennt) ja leider gang und gebe ist..
Also noch mal Fazit: Vielen dank für diese tolle Seite!
Ansonsten kann ich dir noch Rainmeter (http://rainmeter.net/cms/) ans Herz legen.
Damit kann man seinen Desktop auch schon recht hübsch anpassen. [Edit] zumindest kannst du so die CPU Anzeige realisieren [/Edit]
Ansonsten kannst du dir ja auch die letzte Zeile im Speicher halten (also aktuelleZeile und letzteZeile) und schreibst die Zeile erst einen lauf später in die Datei.
Ohohoh da war wohl meine Recherche mehr als mangelhaft, nein das wusste ich leider nicht, also das ich da sofort einen Filestream zurück bekomme.
Aber zu deine anderen Frage: Ja der Ordner existiert und auch die die Datei habe ich beispielhaft einmal Leer angelegt.
Hallo zusammen,
es tut mir wirklich leid das hier jetzt den 81. Thread mit dieser Fehlermeldung aufmache, aber ich habe leider mit der Forensuche nicht (passendes) gefunden.
Ich hatte zunächst die "Datenbank" - eigentlich ist es ne CSV - Datei auf meiner Datenfestplatte abgespeichert, aber da gehört die ja eigentlich nicht hin. Also benutze ich jetzt das System.Enviroment.SpecialFolder.ApplicationData mittels der Enviroment.GetFolderPath() methode. Aber leider habe ich da scheinbar auch keinen Schreibzugriff drauf...
Ich habe mich beim "implementieren" - es ist ja eigentlich nur die eine Zeile.. - an folgenden Thread gehalten (besonders der Markierte Post) da dieser eigentlich immerwieder in den anderen Posts erwähnt wird.
Zugriffrechte auf Datei erstellen vergeben.
Diese Zeile wirft bei mir die Fehlermeldung im Debugger
if (!File.Exists(Model.Dateipfad)) File.Create(Model.Dateipfad);
Und den Dateipfad baue ich mir so zusammen:
public static readonly string Dateipfad = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Filmtool\movies.csv";
Die Fehlermeldung die dabei erscheint ist die altbekannte..> Fehlermeldung:
System.UnauthorizedAccessException wurde nicht behandelt.
Message=Der Zugriff auf den Pfad "C:\Users\EifelYeti\AppData\Roaming\Filmtool\movies.csv" wurde verweigert.
Source=mscorlib
StackTrace: ...
Danke im Vorraus, ich stehe hier doch irgentwie auf dem Schlauch...
Beim Load speicherst du dir die höchste ID
SELECT MAX(id) FROM deineTabelle;
und schaust danach eben nur nach den einträgen mit einer höheren ID.
SELECT * FROM deineTabelle WHERE id > DieIDdieDuDirGespeichertHastBeimFormLoad
//EDIT: Mal wieder viel zu langsam...
Und zu den Ausnahmen finden innerhalb einer Zeile sei dir auch noch [Artikel] Regex-Tutorial ans Herz gelegt. Damit solltest du mit ein wenig einarbeitung deine Ausnahmen einfach finden.
Nachdem ich ewig lange Rock / Punk gehört haben dröhnt bei mir jetzt meistens Bob Marley's Stimme aus den Woovern 😄
Zwischendrin aber auch Dubstep / DnB / Chillstep.
Du z.B. den Content Zeilenweise durchlaufen - reader.ReadLine() - und mit string.split('~'); arbeiten. Und um aus dem String int/double Werte zu erstellen double/int.Parse("Eingabe")...
Dies gehört aber auch zu den Grundlagen von C# [Hinweis] Wie poste ich richtig? 1.1.1
vielen Dank MrSparkle,
genau den Anstoß habe ich gesucht!
PS: @thetruedon: Doch excel kann das erkennen 😉 Wenn die Umbrüche so gestaltet sind
"test;test;"test\nTestin2Reihe";test" dann erkennt Excel automatisch das es ein Umbruch innerhalb eines Feldes ist.
Hallo Gemeinde,
Ich hoffe das mein Problem jetzt nicht unter [Hinweis] Wie poste ich richtig? 1.1.1 fällt, aber ich möchte eine CSV Datei erstellen bei der innerhalb eines Elements Zeilenumbrüche vorhanden sind.
Wenn ich ein "\r\n" oder ein "\n" oder ein Enviorment.NewLine an meinen String anfüge, wird - logischer Weise - eine neue Zeile angebrochen und auch in Excel so dargestellt.
Allerdings ist es mit Excel mittels ALT+Enter möglich auch in einer CSV Datei innerhalb einer "Zelle" mehrere Zeilen unterzubringen.
Wenn ich mir die erstelle CSV Datei danach mit Notepad++ ansehe (Nicht druckbare Zeichen an) steht in der Datei auch nur ein Linefeed("\n").
Sollte das hier doch eine Grundlagen frage sein würde ich mich über einen Link freuen, da ich unter [FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik) und unter [FAQ] Was bedeutet das @ (=at) vor String-Literalen? Und: Wissenswertes zu Escape-Sequenzen nichts gefunden habe.
Leider auch nicht in der Forensuche.
Danke im Vorraus und schöne Ostertage aus der Eifel
EifelYeti
Ja das Verhalten ist sogar so gewollt.
formatter.Serialize(fs, this);
Damit schreibst du deine Objekte unverschlüsselt in die Datei.
Versuch mal:
fileStream = new FileStream(Dateipfad, FileMode.Create);
DESCryptoServiceProvider csp = new DESCryptoServiceProvider();
csp.Key = ASCIIEncoding.ASCII.GetBytes("ABCDEFGH");
csp.IV = ASCIIEncoding.ASCII.GetBytes("ABCDEFGH");
using (CryptoStream cryptoStream = new CryptoStream(fileStream, csp.CreateEncryptor(), CryptoStreamMode.Write))
{
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(memoryStream, this);
byte[] data = memoryStream.ToArray();
cryptoStream.Write(data, 0, data.Length);
}
fileStream.Close();
Vielen Dank für die Antworten!
Ich werde mir heute noch mal die Links durchschauen und mir dann noch mal ein Bild machen.
Schöne Karnevallstage euch allen, falls ihr feiert 😃
Hallo zusammen,
ich habe hier immerweider mal von Models gelesen und das diese hier anders verwendet werden als ich es gelernt habe / beigebracht bekommen habe.
Bevor ich mir etwas ganz falsch einpräge: Frag ich mal lieber.
Ich habe MCV bis jetzt immer so Verstanden
View: ("dumme" Klasse, gibt nur die Daten aus und stellt Benutzereingabe zur Verfügung, kennt den Controller)
Model: ("schlaue" Klasse, hat die Daten zur Verfügung, und stellt Methoden um abrufen / schreiben der Daten zur Verfügung)
Controller: Vermittelt zwischen den/der View und dem/den Model(s).
Also Quasi_ View_ kennt _Controller _kennt Model. Falls der Controller seine Views kennen soll, würde ich ein Observerpattern implementieren.
So jetzt zu meiner Frage. Ist das so richtig? Ich habe hier wie gesagt in den letzten Tagen viel über Models gelesen das meiner Wahrnehmung nicht ganz entspricht.
Gruß
EifelYeti
Danke dN!3L !
da überlegt man sich 10 Jahre lang "sichere Passwörter" und dann kommst du um die Ecke und sagst das ich "hundkatzemaus..................." verwenden kann 😃
Danke für den super Tipp und die fantastische Veranschaulichung!
Gruß
EifelYeti (der sich jetzt neue Passwörter ausdenkt 😃 )
Hallo zusammen.
Wir haben das Problem gefunden:
Ein sy-... Flag , welches in der SAP Gui immer gesetzt ist, wird beim aufruf von Auserhalb nicht gesetzt. Darauf hat aber leider die externe Programmierung geprüft, wodurch die Bedingung immer als falsch beendet wurde.
Also wurde der Userexit zwar aufgerufen, jedoch sofort wieder beendet.
Nun zur Lösung:
Wir haben um das herrauszufinden einen Externenbreakpoint in der SE37 hinzugefügt.
Dann das Testprogramm ablaufen gelassen, hier wird dann sofort im SAP der Ababdebugger geöffnet (klappt witziger Weise auch bei unterschiedlichen Maschienen (Programm => Lokal // SAP => TerminalServer). Hier haben wir dann die Sys'variabelen überwacht und die einzelnen Steps durchgegangen.
Danke für eure Tipps und die Hilfestellungen!
Edit:
Hier noch ein paar Links für mitsuchende, und falls mein Beitrag zu unverständlich gewesen ist:
Hallo zusammen,
ich habe nun die Daten genauso eingegeben wie in der SE37 (Copy & Paste).
Dafür hab ich auch solange die "SAPZEIT" durch ein festes Datum ersetzt.
Wenn ich mir dann aber in der IP10 die Wartungspläne angucke (die werden von der Programmierung angelegt) steht unter der Sonderwartung leider immernoch kein Wert. (Auser die Werte die mit der SE37 angelegt wurden.
Muss ich villeicht noch irgentwo einen Parameter setzten der es erlaubt auf einen Programmabschluss der Hintergrundprogrammierung zu warten?
Bei den Werten bin ich mir jetzt wirklich sicher das ich die 1:1 übernommen habe.
Ich bin zwar selbst noch nicht an den Werten im SAP gescheitert, vertraue da aber voll deiner Erfahrung 😃
//Offtopic: Sorry A:::