Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen
3 Fehlerbehandlung
4 Erweiterte Grundlagen
5 Objektorientierte Programmierung
6 Wichtige Klassen in .NET
7 Weitere Elemente eines Windows-Programms
8 Datenbank-Anwendungen mit ADO.NET
9 Internet-Anwendungen mit ASP.NET
10 Zeichnen mit GDI+
11 Neues in Visual Basic 2008
12 Beispielprojekte
A Installation
B Lösungen der Übungsaufgaben
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Einstieg in Visual Basic 2008 von Thomas Theis
Inkl. zahlreicher Beispiele und Uebungen
Buch: Einstieg in Visual Basic 2008

Einstieg in Visual Basic 2008
geb., mit DVD
442 S., 24,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1192-5
Online bestellenJetzt online bestellen
* versandkostenfrei in (D) und (A)
Pfeil 6 Wichtige Klassen in .NET
  Pfeil 6.1 Klasse String für Zeichenketten
    Pfeil 6.1.1 Eigenschaften der Klasse String
    Pfeil 6.1.2 Trimmen
    Pfeil 6.1.3 Splitten
    Pfeil 6.1.4 Suchen
    Pfeil 6.1.5 Einfügen
    Pfeil 6.1.6 Löschen
    Pfeil 6.1.7 Teilzeichenkette ermitteln
    Pfeil 6.1.8 Zeichen ersetzen
  Pfeil 6.2 Datum und Zeit
    Pfeil 6.2.1 Eigenschaften von DateTime
    Pfeil 6.2.2 Rechnen mit Datum und Uhrzeit
  Pfeil 6.3 Dateien und Verzeichnisse
    Pfeil 6.3.1 Lesen aus einer Textdatei
    Pfeil 6.3.2 Schreiben in eine Textdatei
    Pfeil 6.3.3 Sicheres Lesen aus einer Textdatei
    Pfeil 6.3.4 Sicheres Schreiben in eine Textdatei
    Pfeil 6.3.5 Die Klassen File und Directory
    Pfeil 6.3.6 Eine Liste der Dateien
    Pfeil 6.3.7 Eine Liste der Dateien und Verzeichnisse
    Pfeil 6.3.8 Informationen über Dateien und Verzeichnisse
    Pfeil 6.3.9 Bewegen in der Verzeichnis-Hierarchie
  Pfeil 6.4 Rechnen mit der Klasse Math


Rheinwerk Computing - Zum Seitenanfang

6.3 Dateien und Verzeichnisse  Zur nächsten ÜberschriftZur vorigen Überschrift

Zur dauerhaften Speicherung der Arbeitsdaten eines Programms stehen Dateien und Datenbanken zur Verfügung. Sie ermöglichen es, die Programmbenutzung zu beenden und zu einem späteren Zeitpunkt mit dem gleichen Status wieder fortzusetzen.

In diesem Abschnitt wird die einfache Form der Speicherung behandelt: das Schreiben in Textdateien und das Lesen aus Textdateien. Den Datenbanken ist ein eigener Abschnitt gewidmet.

System.IO

Es werden Objekte der Klassen FileStream, StreamWriter und StreamReader benötigt. Diese stehen im Namensraum System.IO zur Verfügung. Da dieser Namensraum nicht standardmäßig in Visual Basic-Programme eingebunden wird, muss er für die jeweilige Anwendung importiert werden.


Rheinwerk Computing - Zum Seitenanfang

6.3.1 Lesen aus einer Textdatei  Zur nächsten ÜberschriftZur vorigen Überschrift

FileStream

Ein Objekt der Klasse FileStream wird für die Art des Zugriffs auf die Datei und zum Öffnen der Datei benötigt.

StreamReader

Ein Objekt der Klasse StreamReader dient zum Lesen der Datei-Inhalte. Im folgenden Beispiel (p0608) werden alle Zeilen einer Textdatei gelesen und auf dem Bildschirm ausgegeben.

Abbildung 6.13 zeigt den Inhalt der Textdatei. Das Ergebnis des Programms ist in Abbildung 6.14 zu sehen.

Abbildung 6.13  Eingabedatei ein.txt

Abbildung 6.14  Alle Zeilen gelesen

Imports System.IO 
Public Class frm0608 
   Private Sub cmdLesen_Click( ... ) Handles ... 
      Dim fs As New FileStream("ein.txt", FileMode.Open) 
      Dim sr As New StreamReader(fs) 
      Dim zeile As String 
 
      Do Until sr.Peek() = -1 
         zeile = sr.ReadLine() 
         lblA.Text &= zeile & vbCrLf 
      Loop 
      sr.Close() 
   End Sub 
End Class

Zur Erläuterung:

  • Mit der Anweisung Import Systems.IO wird der entsprechende Namensraum eingebunden und mit all seinen Klassen zur Verfügung gestellt.
  • Das Objekt fs wird als Objekt der Klasse FileStream erzeugt. Bei dem hier verwendeten Konstruktor werden dabei der Name der zu öffnenden Datei und der Öffnungsmodus benötigt.

    Pfadangabe

  • Der Name der Datei ein.txt steht in einer Zeichenkette. Wenn kein Pfad angegeben wird, so wird davon ausgegangen, dass die Datei im gleichen Verzeichnis wie die fertige Anwendung steht, hier also in ...\p0608\bin\Debug. Befindet sich die Datei in einem anderen Verzeichnis, so kann der Pfad dorthin relativ (ausgehend vom aktuellen Verzeichnis) oder absolut (mit vollständiger Pfadangabe) angegeben werden.

    Ausnahme

  • Wird die Datei, aus der gelesen werden soll, nicht gefunden, so tritt eine Ausnahme auf. Dieser Fall tritt in der Praxis häufig auf, beispielsweise aufgrund einer falschen Pfadangabe. Diesen wichtigen Aspekt berücksichtigt das übernächste Programm p0610 .

    Open, Create, Append

  • Es gibt eine Reihe von möglichen Öffnungsmodi. Die wichtigsten sind Open (zum Öffnen einer Datei, die man lesen möchte), Create (zum Öffnen einer Datei, die man neu beschreiben bzw. überschreiben möchte) und Append (zum Öffnen einer Datei, an deren Ende man weiterschreiben möchte).
  • Das Objekt sr wird als Objekt der Klasse StreamReader erzeugt. Bei dem hier verwendeten Konstruktor wird dabei das Objekt der Klasse FileStream benötigt, aus dem gelesen werden soll.
  • Bei einer Textdatei ist häufig unbekannt, wie viele Zeilen mit Text gefüllt sind. Möchte man alle Zeilen lesen, muss man daher eine Do…Loop-Schleife verwenden. Diese muss beendet werden, sobald man an das Ende der Datei gelangt ist.

    Peek

  • Die Methode Peek() der Klasse StreamReader prüft das nächste lesbare Zeichen einer Datei, ohne es einzulesen. Liefert die Methode den Wert –1 zurück, ist das Ende der Datei erreicht.

    ReadLine

  • Die Methode ReadLine() der Klasse StreamReader liest eine Zeile bis zum nächsten Zeilenumbruch und liefert den Inhalt der Zeile (ohne den Zeilenumbruch) als String zurück.

    Close

  • Die Methode Close() der Klasse StreamReader schließt den Eingabestream und die zugehörigen Ressourcen – in diesem Falle auch die Datei, aus der gelesen wurde. Das Schließen der Datei ist äußerst wichtig und darf nicht vergessen werden, da die Datei sonst je nach Ablauf für weitere Zugriffe gesperrt sein könnte.

Rheinwerk Computing - Zum Seitenanfang

6.3.2 Schreiben in eine Textdatei  Zur nächsten ÜberschriftZur vorigen Überschrift

Zum Schreiben in eine Datei werden ein Objekt der Klasse StreamWriter und natürlich wieder ein Objekt der Klasse FileStream benötigt. Im folgenden Beispiel (p0609) wird der Inhalt einer mehrzeiligen TextBox (Eigenschaft Multiline = True) vollständig in eine Textdatei geschrieben:

Abbildung 6.15 zeigt das Programm mit der Eingabe:

Abbildung 6.15  Ausgabetext

Nach Betätigung des Buttons Schreiben steht in der Ausgabedatei:

Abbildung 6.16  Ausgabedatei aus.txt

Imports System.IO 
Public Class frm0609 
   Private Sub cmdSchreiben_Click( ... ) Handles ... 
      Dim fs As New FileStream("aus.txt", _ 
         FileMode.Create) 
      Dim sw As New StreamWriter(fs) 
      sw.WriteLine(txtEingabe.Text) 
      sw.Close() 
   End Sub 
End Class

Zur Erläuterung:

    Create

  • Bei der Erzeugung des Objekts der Klasse FileStream wird der Öffnungsmodus Create benutzt. Mit diesem Modus wird die Datei zum Schreiben geöffnet. Falls sie bereits existiert, wird sie ohne Rückfrage überschrieben.

    Ausnahme

  • Kann die Datei, in die geschrieben werden soll, nicht gefunden (falsche Pfadangabe) oder nicht beschrieben werden (Schreibschutz), tritt eine Ausnahme auf. Auch diesen Fall gibt es in der Praxis häufig. Das übernächste Programm (p0611) berücksichtigt diesen wichtigen Aspekt.

    WriteLine

  • Die Methode WriteLine() der Klasse StreamWriter schreibt den übergebenen String in die Datei und fügt einen Zeilenumbruch an. Falls kein zusätzlicher Zeilenumbruch angefügt werden soll, kann man anstelle der Methode WriteLine() die Methode Write() verwenden.
  • Das Multiline-Textfeld kann bereits einige Zeilenumbrüche beinhalten. Diese werden ebenfalls in der Datei gespeichert, bei WriteLine() und bei Write().

Rheinwerk Computing - Zum Seitenanfang

6.3.3 Sicheres Lesen aus einer Textdatei  Zur nächsten ÜberschriftZur vorigen Überschrift

Wie bereits erwähnt, tritt eine Ausnahme auf, wenn die auszulesende Datei nicht gefunden wird, was häufig vorkommt.

Im nachfolgenden Programm (p0610) werden zwei Lösungen zur Umgehung dieses Problems vorgestellt. Bei der ersten Lösung wird vorab die Existenz der Datei geprüft, bei der zweiten Lösung wird eine Ausnahmebehandlung durchgeführt. Zunächst die erste Lösung:

Abbildung 6.17  Ausgabe bei falschem Dateinamen

Imports System.IO 
Public Class frm0610 
   Private Sub cmdExistenz_Click( ... ) Handles ... 
      Dim fs As FileStream 
      Dim sw As StreamReader 
      Dim dateiname As String = "ein.txt" 
      Dim zeile As String 
 
      If Not File.Exists(dateiname) Then 
         MsgBox("Die Datei " & dateiname _ 
            & " existiert nicht") 
         Exit Sub 
      End If 
      fs = New FileStream(dateiname, FileMode.Open) 
      sw = New StreamReader(fs) 
      Do Until sw.Peek() = -1 
         zeile = sw.ReadLine() 
         lblA.Text &= zeile & vbCrLf 
      Loop 
      sw.Close() 
   End Sub 
End Class

Zur Erläuterung:

  • Es werden zunächst nur zwei Objektverweise auf Objekte der Klasse FileStream und StreamReader erzeugt. Würde man direkt Objekte erzeugen, so würde das Programm schon versuchen, eine Datei zu öffnen, die unter Umständen nicht existiert.
  • Der Dateiname wird in einer String-Variablen gespeichert, da er mehrfach benötigt wird.

    File, Exists

  • Die Klasse File stellt Elemente zur Information über und Bearbeitung von Dateien zur Verfügung. Die statische Methode Exists() prüft, ob eine angegebene Datei existiert. Weitere Möglichkeiten der Klasse File werden im Abschnitt 6.3.5, »Die Klassen File und Directory«, vorgestellt.
  • In einer Verzweigung wird die Existenz der Eingabedatei ein.txt geprüft. Ist sie nicht vorhanden, wird False zurückgeliefert, eine Fehlermeldung ausgegeben und die Prozedur sofort verlassen.
  • Existiert die Eingabedatei, werden zwei Objekte der Klasse File-Stream und StreamReader erzeugt und den beiden bereits vorhandenen Objektverweisen zugewiesen.
  • Anschließend kann die Datei wie gewohnt ausgelesen werden.

Es folgt der Programmteil mit der Ausnahmebehandlung, auch in p0610:

Imports System.IO 
Public Class frm0610 
[ ... ] 
   Private Sub cmdAusnahme_Click( ... ) Handles ... 
      Dim fs As FileStream 
      Dim sw As StreamReader 
      Dim zeile As String 
 
      Try 
         fs = New FileStream("ein.txt", FileMode.Open) 
         sw = New StreamReader(fs) 
         Do Until sw.Peek() = -1 
            zeile = sw.ReadLine() 
            lblA.Text &= zeile & vbCrLf 
         Loop 
         sw.Close() 
      Catch ex As IOException 
         MsgBox(ex.Message) 
      End Try 
   End Sub 
End Class

Zur Erläuterung:

  • Wie im ersten Fall werden nur zwei Objektverweise erzeugt.

    Try…Catch

  • Das restliche Programm steht in einem TryCatch-Block, damit eine eventuell auftretende Ausnahme behandelt werden kann.
  • Sofern die Datei nicht existiert, wird der Catch-Teil durchlaufen und eine Fehlermeldung ausgegeben: »Die Datei ... konnte nicht gefunden werden«.

    IOException

  • Auf diese Weise können auch noch andere mögliche Eingabe-/Ausgabefehler abgefangen werden, daher wird die übergeordnete Exception-Klasse IOException genutzt. Diese etwas universellere Lösung ist im vorliegenden Fall die bessere Wahl.

Rheinwerk Computing - Zum Seitenanfang

6.3.4 Sicheres Schreiben in eine Textdatei  Zur nächsten ÜberschriftZur vorigen Überschrift

Eine Ausnahme tritt auch auf, falls die Datei, in die geschrieben werden soll, nicht gefunden werden kann (falsche Pfadangabe) oder nicht beschrieben werden kann (Schreibschutz). Beide Fälle treten in der Praxis häufig auf.

Im folgenden Programm (p0611) wird dieses Problem mit einer Ausnahmebehandlung umgangen:

Imports System.IO 
Public Class frm0611 
   Private Sub cmdAusnahme_Click( ... ) Handles ... 
      Dim fs As FileStream 
      Dim sw As StreamWriter 
      Dim dateiname As String = "C:\Temp\aus.txt" 
 
      Try 
         fs = New FileStream(dateiname, FileMode.Create) 
         sw = New StreamWriter(fs) 
         sw.WriteLine(txtEingabe.Text) 
         sw.Close() 
      Catch ex As IOException 
         MsgBox(ex.Message) 
      End Try 
   End Sub 
End Class

Abbildung 6.18  Falsche Pfadangabe

Zur Erläuterung:

  • Es wird versucht, in die Datei aus.txt im Verzeichnis c:\temp zu schreiben.
  • Gelingt dies aus den oben geschilderten Gründen nicht, erfolgt eine Fehlermeldung.
  • Andernfalls wird der Inhalt des Textfelds vollständig in die Datei geschrieben.

Rheinwerk Computing - Zum Seitenanfang

6.3.5 Die Klassen File und Directory  Zur nächsten ÜberschriftZur vorigen Überschrift

Die beiden Klassen File und Directory bieten zahlreiche Möglichkeiten zur Information über Dateien und Verzeichnissen.

Im nachfolgenden Programm »Mini-Explorer« (p0612), das sich über einige Abschnitte erstreckt, werden einige nützliche, statische Methoden dieser beiden Klassen eingesetzt:

  • Directory.Exists(): Prüft die Existenz eines Verzeichnisses.
  • Directory.SetCurrentDirectory(): Setzt das Verzeichnis, in dem die Windows-Anwendung arbeitet, neu.
  • Directory.GetCurrentDirectory(): Ermittelt das Verzeichnis, in dem die Windows-Anwendung arbeitet.
  • Directory.GetFiles(): Ermittelt eine Liste der Dateien in einem Verzeichnis.
  • Directory.FileSystemEntries(): Ermittelt eine Liste der Dateien und Unterverzeichnisse in einem Verzeichnis.
  • File.GetCreationTime(): Ermittelt Datum und Uhrzeit der Erzeugung einer Datei oder eines Verzeichnisses.
  • File.GetLastAccessTime(): Ermittelt das Datum des letzten Zugriffs auf eine Datei oder ein Verzeichnis.
  • File.GetLastWriteTime(): Ermittelt Datum und Uhrzeit des letzten schreibenden Zugriffs auf eine Datei oder auf ein Verzeichnis.

Es wurde hier bewusst auf den Einsatz von Methoden verzichtet, die Dateien und Verzeichnisse verändern, wie z. B. File.Delete(), File.Move(), File.Replace(), Directory.Delete() oder Directory. Move(). Allzu leicht kann der Benutzer mit diesen Methoden unbeabsichtigt Dateien und Verzeichnisse dauerhaft verändern; sie sollten daher mit großer Vorsicht eingesetzt werden.


Rheinwerk Computing - Zum Seitenanfang

6.3.6 Eine Liste der Dateien  Zur nächsten ÜberschriftZur vorigen Überschrift

Abbildung 6.19 zeigt die Ausgabe der Dateiliste:

Abbildung 6.19  Dateiliste des Verzeichnisses C:\Temp

Der zugehörige Code, in p0612:

Imports System.IO 
Public Class frm0612 
   Private Sub frm0612_Load( ... ) Handles MyBase.Load 
      If Directory.Exists("C:\Temp") Then 
         Directory.SetCurrentDirectory("C:\Temp") 
      Else 
         MsgBox("Das Verzeichnis C:\Temp " _ 
            & "existiert nicht") 
      End If 
   End Sub 
 
   Private Sub cmdDateiliste_Click( ... ) Handles ... 
      Dim verzeichnis As String 
      Dim dateiliste() As String 
      Dim i As Integer 
 
      verzeichnis = Directory.GetCurrentDirectory() 
      dateiliste = Directory.GetFiles(verzeichnis) 
      lstDateiliste.Items.Clear() 
      For i = 0 To dateiliste.Count - 1 
         lstDateiliste.Items.Add(dateiliste(i)) 
      Next 
   End Sub 
[ ... ] 
End Class

Zur Erläuterung:

    SetCurrentDirectory

  • Zum Start des Programms, in der Formular-Load-Prozedur, wird das Arbeitsverzeichnis der Anwendung mit der Methode Directory. SetCurrentDirectory() auf C:\Temp gesetzt.

    Exists

  • Vorher wird mit der Methode Directory.Exists() geprüft, ob das Verzeichnis existiert. Beide Methoden erwarten als Parameter eine Zeichenkette.
  • Betätigt der Benutzer den Button Dateiliste, so wird eine Liste der Dateien in diesem Verzeichnis angezeigt.

    GetCurrentDirectory

  • Die Variable verzeichnis wird mithilfe der Methode Directory. GetCurrentDirectory() auf das aktuelle Arbeitsverzeichnis gesetzt. Zu Beginn ist dies C:\Temp.

    GetFiles

  • Die Methode Directory.GetFiles() liefert ein Feld von Strings. Die Variable dateiliste wurde als ein solches Feld (unbekannter Größe) deklariert und erhält den Rückgabewert der Methode zugewiesen.
  • Mithilfe einer For-Schleife und der Feld-Eigenschaft Count wird das Listenfeld mit den Dateinamen gefüllt.

Rheinwerk Computing - Zum Seitenanfang

6.3.7 Eine Liste der Dateien und Verzeichnisse  Zur nächsten ÜberschriftZur vorigen Überschrift

In der nächsten Ausgabe erscheinen zusätzlich die Unterverzeichnisse:

Abbildung 6.20  Verzeichnis C:\Temp, Dateien und Verzeichnisse

Der nächste Teil des Programms p0612 lautet wie folgt:

Imports System.IO 
Public Class frm0612 
[ ... ] 
   Private Sub cmdSystemeinträge_Click( ... ) _ 
         Handles ... 
      Dim verzeichnis As String 
      Dim dateiliste() As String 
      Dim i As Integer 
 
      verzeichnis = Directory..GetCurrentDirectory() 
      dateiliste = _ 
         Directory.GetFileSystemEntries(verzeichnis) 
      lstDateiliste.Items.Clear() 
      For i = 0 To dateiliste.Count - 1 
         lstDateiliste.Items.Add(dateiliste(i)) 
      Next 
   End Sub 
[ ... ] 
End Class

Zur Erläuterung:

    GetFileSystemEntries

  • Die Methode Directory.GetFileSystemEntries() ist der Methode Directory.GetFiles() sehr ähnlich. Allerdings liefert sie nicht nur die Dateien, sondern auch andere Systemeinträge wie etwa Verzeichnisse.

Rheinwerk Computing - Zum Seitenanfang

6.3.8 Informationen über Dateien und Verzeichnisse  Zur nächsten ÜberschriftZur vorigen Überschrift

Im Folgenden wird der nächste Teil des Programms p0612 entwickelt:

Abbildung 6.21  Informationen über die ausgewählte Datei

Imports System.IO 
Public Class frm0612 
[ ... ] 
   Private Sub cmdInfo_Click( ... ) Handles ... 
      Dim name As String 
      If lstDateiliste.SelectedIndex <> -1 Then 
         name = lstDateiliste.Text 
         lblAnzeige.Text = name 
         lblAnzeige.Text &= vbCrLf & "Erzeugt: " _ 
            & File.GetCreationTime(name) 
         lblAnzeige.Text &= vbCrLf _ 
            & "Letzter Zugriff: " _ 
            & File.GetLastAccessTime(name) 
         lblAnzeige.Text &= vbCrLf _ 
            & "Letzter Schreibzugriff:" _ 
            & File.GetLastWriteTime(name) 
      Else 
         MsgBox("Es wurde kein Eintrag ausgewählt") 
      End If 
   End Sub 
End Class

Zur Erläuterung:

  • Hat der Benutzer in der Liste der Dateien (und ggf. Verzeichnisse) einen Eintrag ausgewählt, so werden nach Betätigung des Info-Buttons einige Informationen zu den letzten Zugriffe angezeigt.

    Get...Time

  • Die Methoden File.GetCreationTime(), File.GetLastAccessTime() und File.GetLastWriteTime() ermitteln diese Daten.

Rheinwerk Computing - Zum Seitenanfang

6.3.9 Bewegen in der Verzeichnis-Hierarchie  topZur vorigen Überschrift

Zunächst wird ein Unterverzeichnis ausgewählt:

Abbildung 6.22  Auswahl

Anschließend wechselt man mit dem Button in Verzeichnis in das Unterverzeichnis und ruft den Button Dateiliste auf:

Abbildung 6.23  Unterverzeichnis C:\Temp\Haus

Der letzte Teil des Programms p0612 lautet:

Imports System.IO 
Public Class frm0612 
[ ... ] 
   Private Sub cmdInVerzeichnis_Click( ... ) Handles ... 
      If lstDateiliste.SelectedIndex <> -1 Then 
         If Directory.Exists(lstDateiliste.Text) Then 
            Directory.SetCurrentDirectory(_ 
               lstDateiliste.Text) 
         Else 
            MsgBox(lstDateiliste.Text _ 
               & " ist kein Verzeichnis") 
         End If 
      Else 
         MsgBox("Es wurde kein Eintrag ausgewählt") 
      End If 
   End Sub 
 
   Private Sub cmdNachOben_Click( ... ) Handles ... 
      Directory.SetCurrentDirectory("..") 
   End Sub 
End Class

Zur Erläuterung:

  • Falls der Benutzer in der Liste der Dateien und Verzeichnisse ein Verzeichnis ausgewählt hat und den Button in Verzeichnis betätigt, wird das aktuelle Arbeitsverzeichnis mit Directory.SetCurrentDirectory() gewechselt.
  • Zuvor muss natürlich mit Directory.Exists() geprüft werden, ob es sich bei dem ausgewählten Eintrag wirklich um ein Verzeichnis handelt.
  • Falls bei der Methode Directory.SetCurrentDirectory() als Verzeichnis »..« eingetragen wird, findet ein Wechsel in das übergeordnete Verzeichnis statt.
  • Nach einem Verzeichniswechsel kann man sich wieder die Liste der Dateien (und Verzeichnisse) anzeigen lassen.
  • Auf diese Art und Weise kann man sich in der gesamten Verzeichnis-Hierarchie bewegen und sich alle Inhalte anzeigen lassen.


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
  Zum Katalog
Zum Katalog: Einstieg in Visual Basic 2008






Einstieg in Visual Basic 2008
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Visual Basic 2012






 Visual Basic 2012


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Einstieg in Python






 Einstieg in Python


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de