Zeit addieren

Ich bin nur per Zufall auf deinen Thread gestoßen, bin selber kein VB Programmierer (komme aus der C# Welt), deshalb kenne ich die Syntax von VB auch nicht so gut, aber ich kann dir noch einen Tipp auf den Weg mitgeben:

Nutze IntelliSense, es gibt dir zahlreiche Informationen und Hilfestellungen beim Schreiben von Quellcode. z.B. text1.text "ist" ein String. a ist ein Datum. Wenn du die gleichsetzt, ist es, als ob du ein U-Boot auf einem Flughafen parken möchtest. Aber du kannst z.B. auch einen kleinen sich an Board befindenden Hubschrauber losschicken, der dann auf dem Flughafen landet. (Jedes Objekt in .Net ist von "object" abgeleitet und enthällt eine .ToString() - ich glaube in VB ist es ohne die Klammern am Ende - Methode, die dir aus jedem Objekt einen mehr oder weniger sinnvollen String zaubert.)

Code:
text1.text=a ("HH:NN:SS")

Bis vor ein paar Tagen habe ich so eine Syntax noch nicht gesehen. Merken: Bei Anweisungen muss es immer eine Verbindung zwischen den einzelnen Elementen vorhanden sein. Es wird entweder ein mathematisches Zeichen (+-*/), ein Punkt für eine Submethode / Subeigenschaft oder eine Klammer ( "()" um ein Element reinzuwerfen oder "<> für generics"). Eine kleine Ausnahme ist, wenn du sachen Castest, dort schreibst du dann z.B. Integer i = (Integer) object; (C# Syntax).

Das, was du geschrieben hast, geht schon etwas in Richtung LINQ, aber das ist eine andere Geschichte.
 
Mhm danke, das mit dem UBoot und dem Flugzeug habe ich verstanden den Rest eher nicht so.
Also man muss sich eben sicher sein was man als was deklariert...?!
(Das ist das, was ich aus deinem Eintrag entnehmen.)
 
wie bekomm ich denn jetzt dieses a (also die neue errechnete Zeit) in eine Text Box in einer neuen form?

Private Sub ticket_Click()
Form1.Show
End Sub

Private Sub Form_Load()
Text1.Text = a (format..... <- was müsste denn jetzt da stehen?
End Sub

Merci
 
VB ist zwar nicht so Typgenau, wie C / C++ / C#, aber ich würde es dir trotzdem empfehlen, auf den Typ zu achten, den du verwendest. Bei dem Rest ging es um die Syntax der Programmiersprachen. Zwei Ausdrücke können nicht einfach so im Quelltext stehen, ohne irgendwie miteinander verbunden zu sein. Sei es arithmetisch, logisch oder als Argument.

Eine Ausnahme dazu ist das sog. Casten von Variablen. Ich möchte jetzt ganz ehrlich zu dir sein, ich glaube nicht, dass ich es dir so auf die Schnelle erklären kann, dazu fehlt dir momentan noch das Basiswissen, was Objektorientiertes programmieren angeht. Nur ein kurzer Exkurs in die .Net Welt. ALLES basiert auf einem Typ "Object" und hat somit auch alle Methoden von "Object"

Kleines Beispiel in C#

Code:
            int i = 0;
            Object testObj = (Object)i;
            String testString = (String)testObj; // <-- hier wird ein Fehler auftauchen
            MessageBox.Show(i.ToString());

Was macht der Code, er definiert eine Integer Variable i und setzt die auf 0 (btw. 0 ist nicht null). Dann geht es den Hierarchiebaum hoch, aus i wird ein "Object" gemacht. Und aus dem Object wird dann versucht einen String zu casten. Das funktioniert nicht (Uboot mit Flughafen). Die letzte Zeile macht es jetzt etwas anders. Da ALLES eine ToString() Methode hat, kann man auch dementsprechend von jedem Objekt ein String abrufen. Und das funktioniert auch in diesem Fall.

Ich hoffe, es ist dir etwas klargeworden.
 
wie bekomm ich denn jetzt dieses a (also die neue errechnete Zeit) in eine Text Box in einer neuen form?

Private Sub ticket_Click()
Form1.Show
End Sub

Private Sub Form_Load()
Text1.Text = a (format..... <- was müsste denn jetzt da stehen?
End Sub

Sorry, aber kannst du mal bitte kurz aufsplitten, welcher Code nun zur welcher Form gehört? Meine VB Zeit war mit der 6er Version zuende, von da an habe ich nur C# geschrieben, aber soweit ich mich noch erinnern kann, kannst du auf die Form Elemente direkt zugreifen. Also:

Form1.Text1.Text=Format(a, "HH:NN:SS")
 
Danke für deine Mühen :)

Also ich habe die erste Form die aufgerufen wird da gibt es diesen Befehl:

Private Sub ticket_Click()
Form1.Show
End Sub

(Ein Button wird gedrück, die nächste Form erscheint!)

Dort gibt es diesen Befehl:

Private Sub Form_Load()
Label1.Caption = Date & vbCrLf & Time & vbCrLf & "Leo-Brandt-Straße" & vbCrLf & "Parkdauer bis:"
End Sub

(Ein Label wird gezeigt. Hinter oder unter Parkdauer bis: soll jetzt die neu errechnete Zeit zulesen sein. Die in meiner erseten Form so gezeigt wurde: parkd.Text = Format(a, "HH:NN:SS") und so zustande kam: a = DateAdd("n", z, Now))

Hoffe das ist jetzt verständlich.
 
Hierfür solltest du dir die Gültigjkeitsbereiche von Variablen mal anschauen.

a war bei dir in Form 1 als Prozedurvariable gekennzeichnet
sub xxx
Dim a as date

...
end sub

um von ausserhalb darauf zu zugreifen solltest du dann allerdings entweder eine Funktion in einem Modul schreiben welche dir den Wert aus a zurück gibt oder deine Form um eine Public Variable erweitern auf die du dann zugreifen kannst.

Dies wird mit den suchbegriffen "Variablen übergeben" "Formübergreifend" bei :google: mehr als einmal gefunden.

Grüsse bb
 
ich werd mal suchen, aber das dim a as date habe ich ganz oben hingeschrieben, also nicht in einen bestimmten sub (aber ob das was heißt :confused:)
 
Du musst immer den vollen Pfad angeben, wenn du auf Variablen zugreifen möchtest. Also nochmal in Kürze (keine Garantie, bin C# Coder).

Du hast zwei Forms, die eine ist die mit dem Button, der angeklickt wird. Der Name ist mir / uns bisher unbekannt.
Die zweite ist Form1.

In der ersten Form hast du eine globale Variable deklariert, auf die du aus Form1 zugreifen möchtest. Aber hier musst du auch den Pfad zu a angeben, es reicht nicht aus, wenn du einfach nur a schreibst, es muss schon Formname.a heißen.
 
Ja das hab ich auch schon ausprobiert.
Ich hatte das so geschrieben.
(Das war es noch eine TextBox in die ich in Form1 a schreiben wollte)

text1.text= form1.a

hat aber leider auch nicht funktioniert.
Naja, ich habs jetzt alles in eine Form gemacht. :rolleyes:
 

Neue Beiträge

Zurück