WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 28.10.2000, 22:46   #1
nordbahnfredi
Inventar
 
Benutzerbild von nordbahnfredi
 
Registriert seit: 12.10.2000
Ort: Wien
Alter: 76
Beiträge: 1.963


Frage

Hallo VB5-Spezialisten!

Kann man in VB5 einen string mit einer struktur überlagern?
Gibt's in VB5 pointer???

wie z. B. in PL/1:
variable ... based(addr(...)) oder variable ... based(pointer)

MfG

Nordbahnfredi
nordbahnfredi ist offline   Mit Zitat antworten
Alt 14.11.2000, 01:09   #2
Atlan
Master
 
Registriert seit: 20.12.1999
Beiträge: 636


Beitrag

nein ... vb braucht keine pointer (kann auch keine)
da ich kein PL/1 kann solltest du dein prob. genauer beschreiben

Atlan
Atlan ist offline   Mit Zitat antworten
Alt 14.11.2000, 07:21   #3
nordbahnfredi
Inventar
 
Benutzerbild von nordbahnfredi
 
Registriert seit: 12.10.2000
Ort: Wien
Alter: 76
Beiträge: 1.963


Beitrag

Hallo ATLAN !

Hier die Beschreibung meines Problems, vielleicht kannst Du dir etwas vorstellen.

Option Explicit

Dim Tag As Integer
Dim Monat As Integer
Dim Jahr As Integer
Dim Stunde As Integer
Dim Minute As Integer
Dim Sekunde As Integer

Dim parameter As String

' das aufrufende pgm. übergibt einen parameter mit
' folgendem Inhalt:
' Spalte 01-08 TT.MM.JJ
' 09-16 hh:mm:ss
' ich möchte nun auf jedes Feld einzeln zugreifen können
' also JJ, MM, TT, hh, mm und ss um die Felder einzeln
' auf bestimmte Inhalte zu prüfen.
'
' in PL/1 würde dies so aussehen:
'
' dcl parameter char(16);
' dcl 1 parm_struc based(addr(Parameter)),
' 2 struc_tag char(2),
' ......
' 2 struc_sekunde char(2);
'
' gibt es so etwas ähnliches in VB5 ???


Private Sub Form_Load()

parameter = Command()
Tag = struc_tag

If Tag > 31 Then
'Fehlermeldung
End If

' usw.
End Sub

MfG

Nordbahnfredi


nordbahnfredi ist offline   Mit Zitat antworten
Alt 14.11.2000, 10:05   #4
Sonic
Master
 
Registriert seit: 28.03.2000
Alter: 45
Beiträge: 691


Sonic eine Nachricht über ICQ schicken
Beitrag

Hi nordbahnfredi!

Wieso sagst du das denn nicht gleich!?

In VB kannst du ganz einfach einzelne stellen aus einen String auslesen mit mid$.
Syntax:

mid$(String,[stelle], [anzahl])

bsp.:

datum="14.11.2000"

tag=mid$(datum,1,2) 'liest ab dem 1. Zeichen 2 Zeichen lang in tag

Jahr=mid$(datum,7,4) 'liest ab dem 7. Zeichen 4 Zeichen ein

es gibt auch noch ähnliche Funktionen:

left(string, [länge]); right(string [länge]) lesen [länge] zeichen von links oder rechts.

ltrim (string); rtrim(string), trim (string) schneiden leerzeichen von links, rechts oder von links und rechts ab.

Ich hoffe das hilft dir weiter und war verständlich.

MfG


------------------
__________________
|»»»»»SONIC««««««|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Sonic ist offline   Mit Zitat antworten
Alt 14.11.2000, 12:10   #5
Atlan
Master
 
Registriert seit: 20.12.1999
Beiträge: 636


Beitrag

Sonic hat vollkommen recht ;-)

das ist die einfachst metode, wie du zu deinen Daten kommst.
Der einzige nachteil, ist die vieleicht geschwindigkeit, da die mid$ Funktionen relativ langsam sind
um diesen Nachteil zu umgehen ist aber deutlich mehr programmieraufwand nötig. Es rentiert sich erst,
wenn du sehr oft die Mid Funktion verwenden würdest. Der vollstängigkeit halber werde ich dir ein paar tipps
geben.

du müsstest dir dazu ein Datenfeld erstellen, das du abfragen kannst. natürlich musst du es vorher dimesionieren
und mit daten befüllen

In Visual Basic können Sie mehrdimensionale Datenfelder deklarieren.
Die folgende Anweisung deklariert beispielsweise ein zweidimensionales Datenfeld mit
10 mal 10 Elementen in einer Prozedur:

Static MatrixA(9, 9) As Double

zum Beispiel:

Dim I As Integer, J As Integer
Static MatrixA(1 To 10, 1 To 10) As Double
For I = 1 To 10
For J = 1 To 10
MatrixA(I, J) = I * 10 + J
Next J
Next I


oder du verwendest ein Benutzterdefiniertes Datenfeld


zum Beispiel:

Option Explicit

Type TypeFehler
VBErr As Long
VBError As String
Funktion As String
Statement As Integer
MyError As String
BtnClicked As Integer
ODBCTabFirst As Integer
End Type


sub xy()

Dim Fehlertype(100) As TypeFehler
Dim Rück as variant
...
...
Fehlertype.VBErr = 120


Rück = Fehlertype.VBErr
Rück = Fehlertype.VBError
...
...

end sub

cu Atlan
Atlan ist offline   Mit Zitat antworten
Alt 14.11.2000, 13:58   #6
nordbahnfredi
Inventar
 
Benutzerbild von nordbahnfredi
 
Registriert seit: 12.10.2000
Ort: Wien
Alter: 76
Beiträge: 1.963


Lächeln

Hallo SONIC! Hallo ATLAN!

Da soll noch einer etwas über die heutige Jugend sagen. Danke für eure Hilfe.

ich habe das Problem ursprünglich so gelöst:

parm als Textbox angelegt
dim jahr as integer
parm = command()
parm.selstart = 0
parm.sellength = 2
jahr = parm.seltext
usw.

Hat mir aber nicht so richtig gefallen. In PL/1 und COBOL am Großrechner gab's mehr und elegantere Möglichkeiten.

Mein Problem ist nun, wie lerne ich VB5 kennen?

mid$ gibt's auch in PL/1 z.B.
jahr = string(parm,1,2)

Bis zur nächsten Frage und
mfG

Nordbahnfredi

nordbahnfredi ist offline   Mit Zitat antworten
Alt 23.11.2000, 13:17   #7
Punschkrapfen
Veteran
 
Registriert seit: 19.08.2000
Beiträge: 294


Punschkrapfen eine Nachricht über AIM schicken
Beitrag

<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Original erstellt von Atlan:
nein ... vb braucht keine pointer (kann auch keine)
<HR></BLOCKQUOTE>
Pointer sind "Long"-Variablen. Wenn man Windows-APIs verwendet braucht man sie auch. zB die Funktion EnumWindows liefert die Pointer zu allen Tasks die momentan aktiv sind über callback, dh man gibt einen Pointer auf eine eigene Funktion mit und EnumWindows ruft sie dann auf.

Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

Public Function EnumWindowsCallback(ByVal lHWnd As Long, ByVal lMyParam As Long) As Long
'tu was
End Function

Call EnumWindows(AddressOf EnumWindowsCallback, 1)

der AdressOf - Operator erzeugt dabei einen Pointer auf die Funktion.
Punschkrapfen ist offline   Mit Zitat antworten
Alt 23.11.2000, 13:28   #8
Punschkrapfen
Veteran
 
Registriert seit: 19.08.2000
Beiträge: 294


Punschkrapfen eine Nachricht über AIM schicken
Beitrag

dcl 1 ty_datum,
3 jahr char(4),
3 monat char(2),
3 tag char(2);

würde ich in vb so formulieren:

Type tDatum
jahr As String
monat As String
Tag As String
End Type
dim ty_datum as tDatum

Befüllt wird es gleich, also ty_datum.jahr = "1234"

basen kann man das aber nicht
Punschkrapfen ist offline   Mit Zitat antworten
Alt 23.11.2000, 18:18   #9
Atlan
Master
 
Registriert seit: 20.12.1999
Beiträge: 636


Beitrag

@Punschkrapfen
Jo stimmt, aber ich zähle die win32 API nicht mehr zu VB

cu Atlan
Atlan ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:16 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag