{"id":88022015,"date":"2024-04-25T16:11:20","date_gmt":"2024-04-25T16:11:20","guid":{"rendered":"http:\/\/access-basics.de\/index.php\/88022015.html"},"modified":"2024-04-25T16:11:20","modified_gmt":"2024-04-25T16:11:20","slug":"88022015","status":"publish","type":"page","link":"https:\/\/vbentwickler.de\/88022015\/","title":{"rendered":"Visual Basic Entwickler 02\/2015"},"content":{"rendered":"<h3>Mit Zeichenketten arbeiten<\/h3>\n<p>Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# \u2013 wer h\u00e4tte das gedacht \u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den Text enth\u00e4lt und Methoden und Eigenschaften aufweist. Dieser Artikel liefert eine Einf\u00fchrung in den Umgang mit Zeichenketten unter C#.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Mit_Zeichenketten_arbeiten\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Auflistungen mit der ArrayList<\/h3>\n<p>Von VBA kennen Sie als Auflistungsklassen zun\u00e4chst die eingebaute Collection. Wer noch etwas weiter geht, bindet die Scripting Runtime Library ein und nutzt die Dictionary-Klasse zum Speichern von Auflistungen. \u00dcber den reinen Programmcode hinweg lie\u00dfen sich diese Elemente unter VBA kaum nutzen \u2013 als Datenherkunft etwa f\u00fcr Formular oder Kombinationsfelder taugten sie nicht. Unter C# sieht dies anders aus. Es gibt eine ganze Reihe verschiedener Auflistungsklassen, die sich teilweise auch als Datenherkunft f\u00fcr Steuerelemente eignen. In diesem Artikel schauen wir uns die ArrayList als Vertreter der Auflistungsklassen an.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Auflistungen_mit_der_ArrayList\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Steuerelemente anordnen<\/h3>\n<p>Unter Access ist das Anordnen von Steuerelementen einfach: Sie platzieren diese einfach auf dem Formular. In neueren Access-Versionen gibt es noch die Eigenschaften zum Verankern von Steuerelementen, aber damit sind die M\u00f6glichkeiten bereits ausgesch\u00f6pft. Unter WPF gibt es zahlreiche weitere M\u00f6glichkeiten, um die Position von Steuerelementen festzulegen. Dieser Artikel zeigt, wie es funktioniert und welche Vorteile sich gegen\u00fcber Access ergeben. Dabei lernen Sie auch gleich noch das Grid-Steuerelement und das GridSplitter-Steuerelement kennen, mit dem Sie Bereiche des Fensters vergr\u00f6\u00dfern oder verkleinern k\u00f6nnen.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Steuerelemente_anordnen\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Daten im DataGrid-Steuerelement anzeigen I<\/h3>\n<p>In einem Access-Magazin w\u00fcrde man erstmal die Schaltfl\u00e4che oder das Textfeld als Steuerelemente vorstellen. Im DATENBANKENTWICKLER wollen wir jedoch von mehreren Seiten an die Programmierung von Datenbank-Anwendungen mit Visual Studio herangehen \u2013 unter anderem, indem wir die Nutzung von ADO.NET vorstellen oder die Erstellung von Benutzeroberfl\u00e4chen mit WPF beschreiben. F\u00fcr beides wollen wir \u00fcberhaupt einmal die Daten der gew\u00fcnschten Datenherkunft anzeigen, statt diese immer per Console auszugeben. Dies gelingt am einfachsten mit dem DataGrid-Steuerelement, das stark vereinfacht mit einem Unterformular unter Access in der Datenblattansicht zu vergleichen ist.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Daten_im_DataGridSteuerelement_anzeigen_I\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Objektorientierte Programmierung: Grundlagen II<\/h3>\n<p>Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen \u2013 zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, \u00dcberladung von Methoden und verschiedene Parameter-Techniken ein.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Objektorientierte Programmierung: Vererbung I<\/h3>\n<p>Eines der wichtigsten Merkmale der objektorientierten Programmierung ist die Vererbung. Dank der Vererbung kann man f\u00fcr ein Objekt eine Basisklasse erstellen, die grundlegende Eigenschaften und Methoden f\u00fcr dieses Objekt bereitstellt. Ben\u00f6tigen Sie nun ein weiteres Objekt, das auf dem ersten Objekt aufbaut, aber weitere oder ge\u00e4nderte Eigenschaften und Methoden enth\u00e4lt, m\u00fcssten Sie ohne Vererbung die gleiche Klasse nochmal erstellen und nach ihren W\u00fcnschen anpassen. Dank Vererbung brauchen Sie in der Klasse f\u00fcr das neue Objekt jedoch nur die Erweiterungen und \u00c4nderungen zu definieren. Den Rest verwenden Sie von der ersten Klasse \u2013 und brauchen eine Menge Code nur an einer Stelle zu warten.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Objektorientierte_Programmierung_Vererbung_I\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Experimentieren mit der Konsole<\/h3>\n<p>Wenn Sie in die Programmierung mit C# einsteigen, werden Sie \u2013 genau wie wir in unseren Beitr\u00e4gen \u2013 eine Menge ausprobieren wollen. Als Umsteiger von VBA haben Sie es da schwer: Unter VBA haben Sie zum Ausprobieren von Code einfach eine neue Prozedur in einem Standardmodul angelegt und diese dann mit F5 gestartet. In Visual Studio verwenden Sie zum Testen von Code zum Beispiel eine Konsolenanwendung. Verschiedene Prozeduren schreiben und mal eben aufrufen wie im VBA-Editor gelingt dort allerdings nicht. Wir zeigen Ihnen, wie Sie dennoch einigerma\u00dfen komfortabel experimentieren k\u00f6nnen.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Experimentieren_mit_der_Konsole\">Zum Artikel &#8230;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit Zeichenketten arbeiten Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# \u2013 wer h\u00e4tte das gedacht \u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"yst_prominent_words":[],"class_list":["post-88022015","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Mit Zeichenketten arbeiten Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# \u2013 wer h\u00e4tte das gedacht \u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/88022015\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Visual Basic Entwickler 02\/2015 - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\"Mit Zeichenketten arbeiten Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# \u2013 wer h\u00e4tte das gedacht \u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/88022015\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-04-25T16:11:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-04-25T16:11:20+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Visual Basic Entwickler 02\/2015 - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Mit Zeichenketten arbeiten Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# \u2013 wer h\u00e4tte das gedacht \u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/88022015\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/88022015\\\/#listItem\",\"name\":\"Visual Basic Entwickler 02\\\/2015\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/88022015\\\/#listItem\",\"position\":2,\"name\":\"Visual Basic Entwickler 02\\\/2015\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/88022015\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/88022015\\\/#organizationLogo\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/88022015\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/88022015\\\/\",\"name\":\"Visual Basic Entwickler 02\\\/2015 - Visual Basic Entwickler\",\"description\":\"Mit Zeichenketten arbeiten Schon VBA bietet eine Menge Funktionen f\\u00fcr den Umgang mit Zeichenketten. Unter C# \\u2013 wer h\\u00e4tte das gedacht \\u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/88022015\\\/#breadcrumblist\"},\"datePublished\":\"2024-04-25T16:11:20+00:00\",\"dateModified\":\"2024-04-25T16:11:20+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Visual Basic Entwickler 02\/2015 - Visual Basic Entwickler","description":"Mit Zeichenketten arbeiten Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# \u2013 wer h\u00e4tte das gedacht \u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den","canonical_url":"https:\/\/vbentwickler.de\/88022015\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/88022015\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/88022015\/#listItem","name":"Visual Basic Entwickler 02\/2015"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/88022015\/#listItem","position":2,"name":"Visual Basic Entwickler 02\/2015","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/88022015\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/88022015\/#organizationLogo"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/88022015\/#webpage","url":"https:\/\/vbentwickler.de\/88022015\/","name":"Visual Basic Entwickler 02\/2015 - Visual Basic Entwickler","description":"Mit Zeichenketten arbeiten Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# \u2013 wer h\u00e4tte das gedacht \u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/88022015\/#breadcrumblist"},"datePublished":"2024-04-25T16:11:20+00:00","dateModified":"2024-04-25T16:11:20+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"Visual Basic Entwickler 02\/2015 - Visual Basic Entwickler","og:description":"Mit Zeichenketten arbeiten Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# \u2013 wer h\u00e4tte das gedacht \u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den","og:url":"https:\/\/vbentwickler.de\/88022015\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2024-04-25T16:11:20+00:00","article:modified_time":"2024-04-25T16:11:20+00:00","twitter:card":"summary_large_image","twitter:title":"Visual Basic Entwickler 02\/2015 - Visual Basic Entwickler","twitter:description":"Mit Zeichenketten arbeiten Schon VBA bietet eine Menge Funktionen f\u00fcr den Umgang mit Zeichenketten. Unter C# \u2013 wer h\u00e4tte das gedacht \u2013 setzt Microsoft noch Einiges drauf. Einer der wichtigsten Unterschiede ist, dass eine Variable des Typs String nun nicht mehr einfach nur eine Zeichenkette aufnehmen kann, sondern sogar auf ein Objekt verweist, das den","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"88022015","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2024-01-28 19:06:04","updated":"2026-05-16 08:01:48","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tVisual Basic Entwickler 02\/2015\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"Visual Basic Entwickler 02\/2015","link":"https:\/\/vbentwickler.de\/88022015\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/pages\/88022015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=88022015"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/pages\/88022015\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=88022015"}],"wp:term":[{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=88022015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}