| |
VB.NET - Ein- und UmsteigerFrage zu Datenaustausch | | | Autor: Bazi | Datum: 28.06.17 13:59 |
| Hallo,
in meinem aktuellen Programm benötige ich eine Möglichkeit des Datenaustausches zwischen verschiedenen Geräten.
Die Geräte sind in der Regel bei der Datenerfassung offline. Datenspeicherung ist derzeit noch in einer xml-Datei, es ist aber vorgesehen auf eine SQLight Datenbank zu wechseln.
Ich kann bei keinem der Geräte sicherstellen dass ein anderes online ist. Daher müsste der Austausch meiner Meinung nach über eine Cloud laufen?
Wie würdet Ihr den Datenabgleich realisieren?
Gruß Christian
Danke für die Hilfe
Gruß Christian | |
Re: Frage zu Datenaustausch | | | Autor: effeff | Datum: 28.06.17 15:48 |
| Da reicht eine Datenbank im Internet; Sobald irgendeine Maschine online ist, versorgt sie sich dort mit den Daten.
EALA FREYA FRESENA | |
Re: Frage zu Datenaustausch | | | Autor: Blackbox | Datum: 28.06.17 17:09 |
| Hi,
meintest Du SQLITE? | |
Re: Frage zu Datenaustausch | | | Autor: Bazi | Datum: 28.06.17 20:04 |
| DB im Internet kann ich nicht sicherstellen. Habe keinen Server wo ich darauf zugreifen kann.
Das Programm ist derzeit so aufgebaut dass ein Rechner die Serverfunktion übernehmen soll. An diesem registrieren sich die anderen Rechner. Der "Server" soll alle Daten von seinen angemeldeten Rechnern erhalten und verarbeiten, dann entsprechend auf die anderen Rechner weiter verteilen.
Danke für die Hilfe
Gruß Christian | |
Re: Frage zu Datenaustausch | | | Autor: Bazi | Datum: 28.06.17 20:04 |
| ja, hab mich wohl verschrieben. Sorry.
Danke für die Hilfe
Gruß Christian | |
Re: Frage zu Datenaustausch | | | Autor: Franki | Datum: 29.06.17 03:32 |
| Hallo,
beschreibe doch mal etwas genauer wie bzw. wann der Datanaustausch zwichen den Geräten stattfinden soll oder kann.
Eine Cloud funktioniert ja auch nur dann wenn die Geräte ihre Daten dort hin übertragen können. Wenn sie offline sind geht gar nichts.
Also wie können sie sich austauschen? Das kann eine Cloud sein, ein Webserver im Internet aber auch ein lokaler Rechner im Intranet oder soger HomeOffice Netzwerk. Oder auch Austasch per E-Mail mit Dateianhang usw. wäre machbar.
Um was für Geräte handelt es sich bei dir? (ich vermute mal MDE oder so was) und wann sind diese denn erreichbar für eine Datenaustausch?
Deine Geräte erfassen wahrscheinlich lokal ihre Daten und müssen sie irgendwann synchronisieren.
Gruß
Frank | |
Re: Frage zu Datenaustausch | | | Autor: Schudi | Datum: 30.06.17 09:01 |
| Hmmm...
Du schreibst:
Zitat: | | Ich kann bei keinem der Geräte sicherstellen dass ein anderes online ist. | |
Aber Du schreibst auch:
Zitat: | | Das Programm ist derzeit so aufgebaut dass ein Rechner die Serverfunktion übernehmen soll. An diesem registrieren sich die anderen Rechner. Der "Server" soll alle Daten von seinen angemeldeten Rechnern erhalten und verarbeiten, dann entsprechend auf die anderen Rechner weiter verteilen. | |
Kannst Du denn wenigstens sicher stellen dass der Rechner der Server "spielen" soll immer eingeschaltet und erreichbar ist?
Befinden sich alle teilnehmenden Rechner in einem lokalen Netzwerk? Andernfalls könnte die Erreichbarkeit des Servers ja schon durch Ausfall des Internetzugangs gefährdet sein.
Ich würde das vermutlich so lösen, dass ich die Daten grundsätzlich zuerst in eine lokale Datenbank speichere. Dann würde ich prüfen, ob die zentrale Datenbank erreichbar ist und die Daten ggf. dorthin übertragen.
Es ist ja auch die Frage ob die zentrale Datenbank für die Lauffähigkeit Deiner Anwendung zwingend vorhanden und im Zugriff sein muss? Werden Daten aus dieser Datenbank zur Ausführung der Anwendung benötigt?
In welcher Beziehung stehen die Daten der einzelnen Plätze zueinander? Muss Platz A wissen, was Platz B aktuell macht?
Du schreibst ja, dass der Server die Daten, nachdem er sie empfangen hat, an alle anderen Plätze weiter leiten soll. Wie zeitnah muss dies passieren? Und wenn Du nie sicher sein kannst, dass ein Platz aktiv ist, wie soll der Server die Daten dann an die Plätze verteilen, also auf deren Datenbank zugreifen? Besser wäre es wohl wenn ein Platz sich beim Start der Anwendung die Daten selber "holt".
Wie immer - viele Fragen, die man erst klären muss...
Beitrag wurde zuletzt am 30.06.17 um 09:06:00 editiert. | |
Re: Frage zu Datenaustausch | | | Autor: Bazi | Datum: 30.06.17 11:04 |
| Hallo,
wir haben verschiedene mobile Geräte (Laptop, Tablets) auf denen Daten erfasst werden.
Die Geräte sind bei der Datenerfassung offline, es gibt keinen zentralen Rechner der ständig an ist und als Server fungiert.
Bei den mobilen Geräten ist ausgehandelt welches als Server für das jeweilige Projekt dient. Kriterium habe ich die MAC-Adresse festgelegt.
Die Geräte haben alle irgendwann Internet-Verbindung. Ich kann aber nicht sicherstellen dass zu bestimmten Zeiten bestimmte Geräte online sind. Daher bin ich der Ansicht dass der Datenabgleich über die Wolke erfolgen müsste.
Webserver kann ich nicht stellen, lokaler Rechner ist nicht vorhanden.
Mailanhang ginge, aber da finde ich die Wolke performanter.
Mein derzeitiger Gedanke geht in Richtung Austausch via xml-Dateien. MAC-Adresse des jeweiligen Empfängers im Dateinamen.
Die Frage war ob es für diesen Fall evtl. noch andere Austauschmöglichkeiten gibt die ich evtl. nicht kenne.
Gruß Christian
Danke für die Hilfe
Gruß Christian | |
Re: Frage zu Datenaustausch | | | Autor: Manfred X | Datum: 30.06.17 15:28 |
| Hallo!
Hast Du Dir Gedanken über ein Regelsystem für die User gemacht,
aus dem hervorgeht, in welchen Intervallen und bis zu welchen Schlüssel-
Zeitpunkten die Cloud-DB durch die lokalen Geräte jeweils aktualisiert
zu werden hat???
Schudi hat ja bereits darauf aufmerksam gemacht, daß Du Dich eventuell
mit einer Fülle von Koordinierungsproblemen "en Detail" auseinandersetzen
mußt.
Beitrag wurde zuletzt am 30.06.17 um 15:32:02 editiert. | |
Re: Frage zu Datenaustausch | | | Autor: Bazi | Datum: 30.06.17 20:16 |
| Zeitnah muss das nicht passieren.
Es geht darum dass mit verschiedenen Geräten Begehungen auf Baustellen gemacht werden. Die Begehungen werden unter anderem von externen Mitarbeitern gemacht, die die Tablets mit nach hause nehmen.
Die Funktion des Servers spielt derzeit mein Laptop. Datenaustausch ist via einzelne Textdateien und Dropbox. Werde ich aber dieses WE auf xml und Dropbox umstellen. Bei einzelnen Textdateien ist mir die Anzahl der Dateien zu groß. Jeder Datensatz jeder Tabelle eine Datei, und Bilder und Pläne nochmal separat dazu. Da kommt schon was zusammen.
Momentan ist es so geregelt:
Ein neues Tablet schreibt eine Textdatei mit Anmeldeinformationen in einen dafür ausgehandelten Ordner in der Dropbox. Das kann z.B. Abends um 22:00 Uhr sein.
Irgendwann liest mein Laptop diese Textdatei und bei mir poppt ein Fenster auf wo ich den sendenden Tablet als Client für ein Projekt (oder mehrere) eintrage.
Daraufhin werden für den Tablet nötige Informationen in die Dropbox in besagtes Verzeichnis gelegt.
Irgendwann liest der Tablet die Dateien ein und hat die Daten drauf.
Im Namen der Austauschdateien ist immer die MAC-Adresse des Empfängers drin. Danach werden die Daten beim lesen des Verzeichnisses gefiltert. Mir ist klar dass falls ein Gerät seine MAC ändert dieser keine Daten mehr erhält.
Da beim Datenaustausch jeder Rechner nur die für ihn bestimmten Dateien liest gehe ich davon aus dass ich keine Konflikte bekomme.
Es gibt Situationen wo alle Rechner im gleichen WLan sind, aber nicht in der gleichen Netzwerkgruppe. Also keine direkte Verbindung untereinander.
Meinen Laptop nehme ich nach der Arbeit mit heim. Sollte ich ihn dort einschalten so möchte ich die Daten die von den Tablets über den Tag erstellt wurden einlesen.
Sollte das Internet ausfallen geht nichts mehr, das ist mir klar. Datensicherheit spielt auch keine Rolle, sollte irgend jemand anderés die Dateien mitlesen können wäre das egal.
Blöd ist dass recht viele Bilder dabei sind. Die schreibe ich derzeit in Byte() und in Textdateien, auf der anderen Seite setze ich die wieder zusammen und speichere die im Dateisystem ab.
Datenhaltung ist ein Typisiertes Dataset, Speicherung derzeit noch in xml. Werde ich aber wie schon geschrieben umstellen auf DB.
Die Austauschdateien für neue oder geänderte Daten werden immer beim Speichern geschrieben, das bremst etwas. Trotz neuem Thread. Die Tablets haben auch nur 2GB Arbeitsspeicher.
Die Zeitspanne des Datenaustausches ist unkritisch. Wenn es 1/2 Stunde dauert wäre das auch OK.
Momentan in der Testphase geht es sogar schneller als erwartet.
Je länger wir darüber schreiben um so mehr bin ich der Meinung dass es für diesen Anwendungsfall der richtige Weg ist.
Danke für die Hilfe
Gruß Christian | |
Re: Frage zu Datenaustausch | | | Autor: Schudi | Datum: 01.07.17 07:05 |
| Ich finde Deine Lösung schon beim ersten Lesen - sagen wir - suboptimal. Warum:
a) Die ganze Lösung ist davon abhängig dass Du fit bist und Deinen Laptop manuell einschaltest und den Transfer auslöst.
Fällst Du aus, was wir nicht hoffen wollen, ist die komplette Lösung nicht einsatzfähig.
- Was ist wenn Du Urlaub hast und unter Palmen in der Sonne liegst? Hast Du Dein Laptop dann dabei?
- Was ist wenn Du wegen Krankheit zeitweise oder - Gott möge es verhüten - urplötzlich ganz ausfällst?
Zitat: | | Meinen Laptop nehme ich nach der Arbeit mit heim. Sollte ich ihn dort einschalten so möchte ich die Daten die von den Tablets über den Tag erstellt wurden einlesen. | |
Bei dem Wort "sollte" sträuben sich mir die Nackenhaare. Wenn Du nicht möchtest, dann bekommt also keiner der externen Tablets mehr Daten geliefert, da Du den Vorgang ja manuell anstoßen musst. So etwas geht, wenn ich das jetzt mal aus Sicht Deines Auftraggebers betrachte, gar nicht.
b) Bazi schrieb:
Zitat: | | Mir ist klar dass falls ein Gerät seine MAC ändert dieser keine Daten mehr erhält. | |
Ok, ein Gerät ändert seine Mac-Adresse im Normalfall nie, es sei denn Du wechselst die Netzwerkkarte. Aber was passiert wenn ein Tablet ausfällt und der Mitarbeiter ein neues bekommt? Kommt der dann nicht mehr an seine bisherigen Daten ran? Deine Aussage ist jedenfalls genau das, denn neues Tablet = neue Mac-Adresse.
Also für mich klingt das alles - sorry - wenig professionell und vor Allem wenig ausfallsicher. | |
Re: Frage zu Datenaustausch | | | Autor: Bazi | Datum: 01.07.17 20:39 |
| Die Einwände sind natürlich berechtigt.
Ich könnte es so regeln dass jedes Gerät die MAC-Adressen aller anderen Geräte für das entsprechende Projekt erhält, und neue oder geänderte Daten an alle sendet.
Dann wäre nur noch das Thema mit einem neu aufzunehmenden Gerät am "Serverrechner" ungelöst.
Das wäre aber auch bei einer online-DB das gleiche. Wenn der Admin aus welchem Grund auch immer ein neues Gerät nicht bestätigen kann, erhält das keine Daten.
Wäre der "Server" nun eine Rechner z.B. im Baucontainer, könnte man eine Vertretungsregelung finden. So lange das aber auf meinem Laptop passiert, fällt mit mir auch die Neuanmeldung von Geräten.
Alternative wäre dass jedes Gerät neue hinzufügen kann, das finde ich aber auch nicht gut.
Danke für die Hilfe
Gruß Christian | |
Re: Frage zu Datenaustausch | | | Autor: Manfred X | Datum: 01.07.17 22:44 |
| Hallo!
Deine Datenpakete bestehen aus vielen Bildern, Plänen usw.?
Das scheinen jeweils recht umfangreiche Byte-Mengen zu sein.
Die würde ich nicht in eine Datenbank eintragen.
Wäre es nicht einfacher, wenn für jedes Tablet oder jede
Usergroup eine Internet-Seite (File-Hoster) eingerichtet wird,
wo die erfaßten Datenpakete als Dateiserie abgelegt werden können.
Einzelne Texte könnten in einer Textdatei zusammengefaßt werden.
Zusätzlich kann ein Hintergrund-Programm regelmäßig diese Datenpakete
einsammeln, prüfen und sie ggf. bedarfsgerecht neu verteilt/aufbereitet
zum Download anbieten.
Aber vielleicht habe ich nicht verstanden, was Du erreichen möchtest? | |
Re: Frage zu Datenaustausch | | | Autor: Bazi | Datum: 01.07.17 22:50 |
| Hallo,
ja, in den Datenpaketen sind viele Bilder und PDF-Pläne.
Die speichere ich jedoch nicht (mehr) in der xml bzw. DB, sondern im Dateisystem. Das hatte ich bereits umgestellt. Lediglich zur Übertragung hatte ich sie noch als Byte() umgewandelt, aber auch das schreibe ich gerade um.
Die Variante mit File-Hoster ist doch in etwa die gleiche wie das was ich mit Dropbox mache.
Mit File-Hoster kenne ich mich halt nicht aus.
Danke für die Hilfe
Gruß Christian
Beitrag wurde zuletzt am 01.07.17 um 22:57:31 editiert. | |
Re: Frage zu Datenaustausch | | | Autor: Manfred X | Datum: 01.07.17 23:04 |
| Datenbanken sind in erster Linie dafür konzipiert, überschaubare
Datenmengen in Tabellen-Feldern aufzubewahren, die auf mehr oder
weniger komplexe Weise relational miteinander verknüpft werden.
Zur Archivierung voluminöser Datenbestände (z.b. als Blobs) sind
sie weniger geeignet.
Man kann den Inhalt von Dateiserien in Instanzen einer serialisierbaren
Datenklasse eintragen, deren Member dynamische Listen von String-Variablen,
JPG-Streams usw. sind.
Auf diese Weise entsteht ein speicherbares Datenpaket, das schnelles
Laden/Speichern und strukturierten Zugriff auf die einzelnen Daten-Elemente
ermöglicht.
Beitrag wurde zuletzt am 01.07.17 um 23:27:39 editiert. | |
Teil1: Serialisierbare Klasse für Bilderliste (JPEGs) | | | Autor: Manfred X | Datum: 02.07.17 12:23 |
| Beispiel für eine serialisierbare Klasse,
die die JPEGs im übergebenen Ordner (komprimiert) zusammenfaßt und
sie als Bitmaps zur Verfügung stellt
<Serializable()> _
Public Class PicList
Dim _folder As String
Dim pics As New List(Of Pic)
Public Sub New(ByVal JPEG_Folder As String)
Dim jpgs() As String = IO.Directory.GetFiles(JPEG_Folder, "*.jpg")
For i As Integer = 0 To jpgs.Length - 1
pics.Add(New Pic(jpgs(i)))
Next i
_folder = JPEG_Folder
End Sub
Public ReadOnly Property Count As Integer
Get
Return pics.Count
End Get
End Property
Public ReadOnly Property Folder As String
Get
Return _folder
End Get
End Property
Public ReadOnly Property GetPic(ByVal index As Integer) As Pic
Get
Return pics(index)
End Get
End Property
End Class
<Serializable()> _
Public Class Pic
Private _bytes() As Byte
Private _ms As IO.MemoryStream
Public Property name As String
Public Property created As Date
Public ReadOnly Property Value As Bitmap
Get
If Not _ms Is Nothing Then _ms.Close()
_ms = New IO.MemoryStream(_bytes)
Return New Bitmap(_ms)
End Get
End Property
Public Sub New(ByVal JPEG_File As String)
_bytes = IO.File.ReadAllBytes(JPEG_File)
name = IO.Path.GetFileName(JPEG_File)
created = New IO.FileInfo(JPEG_File).CreationTime
End Sub
End Class | |
Teil2: Anwendungsbeispiel | | | Autor: Manfred X | Datum: 02.07.17 12:26 |
| Das Formular kann JPEGs in einem Ordner zusammenfassen,
anzeigen und sie als Liste serialisieren und deserialisieren
Public Class frmPicSerialize
'Instanz der serialisierbaren Datenklasse
Dim pl As PicList
Dim fmt As New System.Runtime.Serialization. _
Formatters.Binary.BinaryFormatter
'Auswahl der gelisteten Bilder
Dim WithEvents cbo_picnames As New ComboBox With _
{.Parent = Me, .DropDownStyle = ComboBoxStyle.DropDownList, _
.Width = 400, .Top = 40}
'Anzeige eines gewählten Bildes
Dim pb As New PictureBox With _
{.Parent = Me, .Width = 400, .Height = 400, .Top = 80, _
.SizeMode = PictureBoxSizeMode.Zoom}
'Auswahl des Ordners, dessen JPEGs gelistet werden
Dim fbd As New FolderBrowserDialog With _
{.Description = "Ordner mit JPEG-Dateien"}
Dim WithEvents btnLoad As New Button With _
{.Parent = Me, .Text = "JPEGs in eine PicList laden", .Width = 400}
'Speichern der Bilderliste
Dim WithEvents btnSerialize As New Button With _
{.Parent = Me, .Text = "Serialize PicList", _
.Width = 400, .Top = 500, .Enabled = False}
'Laden einer serialisierten Bilderliste
Dim WithEvents btnDeSerialize As New Button With _
{.Parent = Me, .Text = "DeSerialize PicList", _
.Width = 400, .Top = 530}
Dim ofd As New OpenFileDialog With {.Title = "Laden einer PicList", _
.CheckFileExists = True}
Dim sfd As New SaveFileDialog With {.Title = "Speichern einer Piclist", _
.OverwritePrompt = True}
Private Sub PicSerialize_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedDialog
Me.Size = New Size(420, 600)
End Sub
Private Sub cbo_picnames_SelectedIndexChanged _
(sender As Object, e As System.EventArgs) _
Handles cbo_picnames.SelectedIndexChanged
pb.Image = pl.GetPic(cbo_picnames.SelectedIndex).Value
End Sub
Private Sub btnLoad_Click(sender As Object, _
e As System.EventArgs) Handles btnLoad.Click
If fbd.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
PrepareForm()
'Hintergrund-Thread zum Laden der JPEGs aus einem Ordner
Dim lds As New Threading.ThreadStart(AddressOf loadpics)
Dim ld As New Threading.Thread(lds)
ld.Start()
End Sub
Private Sub loadpics()
pl = New PicList(fbd.SelectedPath)
Me.Invoke(New MethodInvoker(AddressOf shownames))
End Sub
Private Sub PrepareForm()
Me.Text = "Bilder werden geladen"
cbo_picnames.Items.Clear()
pb.Image = Nothing
End Sub
Private Sub shownames()
cbo_picnames.Items.Clear()
For i As Integer = 0 To pl.Count - 1
cbo_picnames.Items.Add(pl.GetPic(i).name)
Next i
btnSerialize.Enabled = pl.Count > 0
Me.Text = pl.Count.ToString & " Bilder aus " _
& pl.Folder & " geladen"
cbo_picnames.SelectedIndex = 0
End Sub
Private Sub btnSerialize_Click(sender As Object, _
e As System.EventArgs) Handles btnSerialize.Click
If sfd.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
IO.File.Delete(sfd.FileName)
Using fs As New IO.FileStream _
(sfd.FileName, IO.FileMode.Create, IO.FileAccess.Write)
fmt.Serialize(fs, pl)
End Using
End Sub
Private Sub btnDeSerialize_Click(sender As Object, _
e As System.EventArgs) Handles btnDeSerialize.Click
If ofd.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
PrepareForm()
Using fs As New IO.FileStream _
(ofd.FileName, IO.FileMode.Open, IO.FileAccess.Read)
pl = DirectCast(fmt.Deserialize(fs), PicList)
shownames()
End Using
End Sub
End Class | |
Re: Teil2: Anwendungsbeispiel | | | Autor: Bazi | Datum: 02.07.17 14:03 |
| Das ist gut. Danke
Kann es zwar noch nicht ausprobieren, weil ich wg. Sicherung nicht auf die Projekte zugreifen kann, aber im Code soweit verstanden.
Danke für die Hilfe
Gruß Christian | |
Ergänzender Hinweis | | | Autor: Manfred X | Datum: 02.07.17 21:35 |
| Um bei einer Vielzahl von Zugriffen auf die
Bilderliste ein Speicherleck zu vermeiden, sollte
die jeweils aus der Liste abgefragte/erstellte Bitmap
nach dem Gebrauch "disposed" werden.
Sei pl die Bilderliste ...
Private Sub Slideshow()
Dim bmp As Bitmap = Nothing
For i As Integer = 0 To pl.Count - 1
If Not bmp Is Nothing Then bmp.Dispose()
bmp = pl.GetPic(i).Value
pb.Image = bmp
Me.Text = i.ToString & pl.GetPic(i).name
Me.Refresh()
Threading.Thread.Sleep(2000)
Next i
End Sub | |
Re: Ergänzender Hinweis | | | Autor: Bazi | Datum: 02.07.17 22:09 |
| OK, warum die lange Wartezeit beim Sleep?
Danke für die Hilfe
Gruß Christian | |
Re: Ergänzender Hinweis | | | Autor: Manfred X | Datum: 02.07.17 22:28 |
| Weil es ein Beispiel für eine Slideshow ist.
Dadurch werden die Bilder kurz angezeigt.
Ordentliche Menschen implementieren Freigabe-Methoden in
ihren Klassen, z.B. so ...
Public Class Pic
Implements IDisposable
Private _bytes() As Byte
Private _ms As IO.MemoryStream
Private _bp As Bitmap
Public Property name As String
Public Property created As Date
Public ReadOnly Property Value As Bitmap
Get
Free()
_ms = New IO.MemoryStream(_bytes)
_bp = New Bitmap(_ms)
Return _bp
End Get
End Property
Public Sub New(ByVal JPEG_File As String)
_bytes = IO.File.ReadAllBytes(JPEG_File)
name = IO.Path.GetFileName(JPEG_File)
created = New IO.FileInfo(JPEG_File).CreationTime
End Sub
#Region "IDisposable Support"
Public Sub Free()
If Not _ms Is Nothing Then _ms.Close() ': _ms = Nothing
If Not _bp Is Nothing Then _bp.Dispose() ': _bp = Nothing
End Sub
Private disposedValue As Boolean
Protected Overridable Sub Dispose(disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
Free()
_bytes = Nothing
End If
End If
Me.disposedValue = True
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region
End Class Um die Display-Ressourcen einer nicht mehr benötigten Bild-Abfrage
freizugeben, ruft man "Free"; um eine Pic-Instanz völlig aus der
Liste und dem Speicher zu entfernen, ruft man "Dispose." | |
Re: Ergänzender Hinweis | | | Autor: Bazi | Datum: 02.07.17 22:32 |
| ja, wird leider viel zu oft vergessen.
Danke Dir.
Danke für die Hilfe
Gruß Christian | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|