Hi,
das label-Array ist in dem Event btnlöschen_Click nicht vorhanden.
Erstelle doch sinnvollerweise eine Collection global als Property anstatt diese nur in einer Methode zu erzeugen.
Dann sollte auch der Zugriff klappen.
Array in diesem Zusammenhang zu nutzen ist denkbar ungünstig.
Grundsätzlich geht es schon was du vorhast, aber wie Th69 schon sagte, stimmen die Properties nicht überein.
Du kannst das "umgehen" wenn du über das jeweilige Property in der Klasse Song eine Annotation setzt:
[JsonPropertyName("ReleaseDate")]
public string VRelease { get; set; }
Sauberer wäre es allerdings, wenn die Properties identisch wären.
Hallo,
wenn es sich um eine Konsolenapplikation dreht, dann nutze doch Command Line Args aus der Main-Methode dafür.
Du kannst das auch auf andere Applikationstypen (Winforms, WPF etc.) recht leicht adaptieren.
Gruß 🙂
Hallo zusammen,
ich weiß nicht ob das der richtige Bereich ist - daher bitte ich um Nachsicht.
Ich habe früher wie in diesem Link vorgegangen
um mir alle verfügbaren SQL-Server Instanzen ausgeben zu lassen.
Das funktioniert allerdings nicht mehr und meine Recherchen ergaben, dass die Verwendung von
... SmoApplication.EnumAvailableSqlServers(false);
wohl nicht mehr unterstützt wird - siehe hier.
Erhalte die gleiche Meldung 😦.
Habt ihr eine alternative? Das was ich bisher gefunden habe war, eine Abfrage über ServiceController - meiner Meinung nach
gibt dies aber nur die lokalen Instanzen aus und nicht die, die im Netzwerk über den SQLBrowser gefunden werden können.
Und genau das Feature suche ich aktuell.
Danke schonmal.
Lg,
Platoon.
Und pack mal in die Main()....Methode noch ein System.ReadKey()
Dann wird es sich auch nicht schließen.....
Mach's doch so wie du es geschrieben hast - das wäre zwar ein nicht ganz so eleganter Weg - wie meine Vorredner schon geschrieben haben - aber das würde klappen - vorausgesetzt der nächste Marker wäre halt "ZEILE_X"
Wenn du eine eindeutige Kennung hast, dann sollte das für dich auch passen. Aber wenn du Einfluss auf die Textdatei hast, dann gestalte sie so, dass man sie gescheit auslesen kann und nicht über solche Krücken.
Hallo Abt,
Danke für das Feedback - den Quellcode werde ich einem Refactoring unterziehen.
Danke für den GitHub-Link - den werde ich mir ansehen. Was das DeepCopy angeht - auch hierfür danke für die Info. Werde das entsprechend ändern (im Refactoring) und für die Zukunft berücksichtigen 🙂.
Hallo zusammen,
ich möchte über ein TIFF dass ich vorher in einen MemoryStream lade OCR drüber laufen lassen.
Dazu nehme ich eine Abwandlung von 2 Methoden die ich dazu nutze um mir eine PDF in ein TIFF zu exportieren.
Das klappt super --> auch ohne den Generic GDI+ Fehler.
Das sind die Original Methoden:
List<MemoryStream> inMS;
private void SaveAsImages(string path)
{
inMS = new List<MemoryStream>();
try
{
System.Drawing.Image image = null;
for (var i = 0; i < Renderer.PageCount; i++)
{
var size = Renderer.Document.PageSizes[i];
image = Renderer.Document.Render(i, (int)size.Width , (int)size.Height, 300, 300, false);
MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Tiff);
inMS.Add(ms);
}
SaveAsMultiPageTiff(path, inMS);
}
catch (Exception ex)
{
Cts.Cancel();
Debug.Fail(ex.Message);
}
}
private void SaveAsMultiPageTiff(string sOutFile, List<MemoryStream> inMS)
{
Mouse.OverrideCursor = Cursors.Wait;
System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.SaveFlag;
ImageCodecInfo encoderInfo = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff");
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.MultiFrame);
Bitmap firstImage = null;
try
{
using (MemoryStream ms = new MemoryStream())
{
System.Drawing.Image.FromStream(inMS.First()).Save(ms, ImageFormat.Tiff);
firstImage = (Bitmap)System.Drawing.Image.FromStream(ms1);
firstImage.Save(sOutFile, encoderInfo, encoderParameters);
}
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.FrameDimensionPage);
Bitmap imagePage;
for (int i = 1; i < inMS.Count; i++)
{
using (MemoryStream ms = new MemoryStream())
{
System.Drawing.Image.FromStream(inMS[i]).Save(ms, ImageFormat.Tiff);
imagePage = (Bitmap)System.Drawing.Image.FromStream(ms1);
firstImage.SaveAdd(imagePage, encoderParameters); //throws Generic GDI+ error if the memory streams are not open when this is called
}
}
}
catch (Exception)
{
throw;
}
finally
{
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.Flush);
firstImage.SaveAdd(encoderParameters);
MessageBox.Show("Dokument wurde erfolgreich nach " + sOutFile + " exportiert.", "Dokument export...", MessageBoxButton.OK);
Mouse.OverrideCursor = Cursors.Arrow;
}
}
Ich habe die an den markierten Stellen angepasst --> wo der Fehler auftritt schreibe ich mal in großen Lettern mit dabei:
List<MemoryStream> inMS;
private void SaveAsImages(string path)
{
inMS = new List<MemoryStream>();
PdfiumViewer.PdfRenderer Renderer = new PdfiumViewer.PdfRenderer();
try
{
Renderer.OpenPdf(path);
System.Drawing.Image image = null;
for (var i = 0; i < Renderer.PageCount; i++)
{
var size = Renderer.Document.PageSizes[i];
image = Renderer.Document.Render(i, (int)size.Width, (int)size.Height, 300, 300, false);
MemoryStream ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff);
inMS.Add(ms);
}
SaveAsMultiPageTiff(path, inMS);
}
catch (Exception ex)
{
}
}
private void SaveAsMultiPageTiff(string sOutFile, List<MemoryStream> inMS)
{
Mouse.OverrideCursor = Cursors.Wait;
System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.SaveFlag;
ImageCodecInfo encoderInfo = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff");
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.MultiFrame);
Bitmap firstImage = null;
try
{
using (MemoryStream ms1 = new MemoryStream())
{
System.Drawing.Image.FromStream(inMS.First()).Save(ms1, System.Drawing.Imaging.ImageFormat.Tiff);
firstImage = (Bitmap)System.Drawing.Image.FromStream(ms1);
MemoryStream ms2 = new MemoryStream();
firstImage.Save(ms2, encoderInfo, encoderParameters); //throws Generic GDI+ error if the memory streams are not open when this is called
}
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.FrameDimensionPage);
Bitmap imagePage = null;
for (int i = 1; i < inMS.Count; i++)
{
using (MemoryStream ms1 = new MemoryStream())
{
System.Drawing.Image.FromStream(inMS[i]).Save(ms1, System.Drawing.Imaging.ImageFormat.Tiff);
imagePage = (Bitmap)System.Drawing.Image.FromStream(ms1);
firstImage.SaveAdd(imagePage, encoderParameters); //throws Generic GDI+ error if the memory streams are not open when this is called
}
}
encoderParameters.Param[0] = new EncoderParameter(encoder, (long)EncoderValue.Flush);
firstImage.SaveAdd(encoderParameters);
ÄNDERUNGEN AB HIER
var img = firstImage.Clone();
firstImage.Dispose();
using (MemoryStream ms = new MemoryStream())
{
((Bitmap)img).Save(ms, ((Bitmap)img).RawFormat); ==> UND HIER KNALLT ES
DoOCR(ms.ToArray());
}
ÄNDERUNGEN BIS HIER
}
catch (Exception ex)
{
//ensure the errors are not missed while allowing for flush in finally block so files dont get locked up.
throw;
}
finally
{
// Close out the file
Mouse.OverrideCursor = Cursors.Arrow;
}
}
Als Fehler bekomme ich folgendes:> Fehlermeldung:
A generic error occurred in GDI+.
Im StackTrace steht folgendes:
Fehlermeldung:
bei System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams)
bei System.Drawing.Image.Save(Stream stream, ImageFormat format)
bei DoSSuiteV2.Models.DMSModel.SaveAsMultiPageTiff(String sOutFile, List`1 inMS) in ...
Ich weiß leider nicht mehr weiter - hat jemand eine Idee für diese mehr oder weniger nichts-sagende Meldung?
private Adressdaten addData = new Adressdaten(); public Adressdaten AddData { get => addData; set { if (value != addData) { addData = value; AddTyp.Adresstyp = Adressdatenliste.FirstOrDefault(x => x.AdressTyp == AddTyp.Adresstyp).ToString(); // Funktioniert nicht RaisePropertyChanged(); ChangeAdressData = true; } } }
Gute - CodeBehind ist etwas blöde ausgedrückt - aber genau an dem Punkt "Funktioniert nicht".
Warum lagerst du das nicht in ein Command aus?