String ausfiltern

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe folgendes Problem
ich muss einen 10stelligen String nach der Eingabe in einem OP
aus einer Liste (DB) von Strings diesen aussuchen.
d.h. ich habe einen DB mit 100 Strings und muss nach dem eingegebenen suchen. Mit der so festgestellten Platznummer muss ich dann weitere Infos (1.Byte) aus einem weiteren DB holen.

Beispiel:
Eingabe: kabc12fghi
Liste (DB10)

aaaaaaa
bbbbbbbb
ccccccccc
kabc12fghi
ddddddd

hier steht der String an 4.Stelle
mit dieser Info wähle ich dann in einem anderen DB das DW4 aus

Kann mir hier jemand mit einem kleinen Beispiel helfen oder einen Tipp geben

mit zeigern komme ich bei strings nicht so zurecht (da mehrere Bytes gross) in der pc WELT würde ich ein Array anlegen ?

System:
SINATIC S7 CPU 314
Step7 V5.3
OP7
Protool Pro 6

Danke :cry: :oops:
 
String

Hallo,

kannste doch auch mit nem Array machen, ARRAY[0..99] OF STRING[10].
Dann würd ich nacheinander die Strings aus dem Array auslesen und auf eine Variable schreiben. Diese über eine Stringvergleichsfunktion mit der Eingabe aus dem OP vergleichen. Und dann gefunden oder weiter. Index nehmen und den anderen Wert entsprechend auslesen, fertig. Machen musste das dann schon selbst, sollst es ja auch verstehen.

MfG
André Räppel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie auslesen

Hallo sps-concept,
Grundsätzlich klar
doch wie adessiere ich ein Array cc[adresse].....
Bräuchte hier noch einen Tipp mit welchen Befehlen ich hier an den Inhalt des Arrays komme
Danke :oops:
 
String

Hallo,

na du legst dir zb nen String[1..10] als Lokalvariable an. Der ist dann 12 Bytes lang mit Vorkopf. Dann klapperst du deinen DB mit den fest eingebeben Strings ab

Code:
L 100 // Anzahl??
BACK: T schleife

CLR
= gefunden

AUF DB ??

L index
L 12
*I
T Zeiger

L DBD[zeiger,P#0.0]
T LD0
L DBD[zeiger,P#4.0]
T LD4
L DBD[zeiger,P#8.0]
T LD8

Dann verglechst du den ausgelesenen String mit dem Eingabewert des OP. --> gefunden   Da findeste in der Standard Lib ne entsprechende Funktion. Wenn ungleich dann gehst du weiter in der Schleife

U gefunden
SPB NEXT

L schleife
Loop BACK

NEXT: U gefunden
......

Viel Erfolg und guten Rutsch!

MfG
André Räppel
 
wird langsam klarer

Hallo sps-concept,
super schnelle antwort.
wird langsam klarer
jedoch noch zwei fragen zum beispiel

- der zeiger wird immer um 12 verschoben da string 10 gross = 12Byte
-LD0 -LD8 hier steht der ausgelesene string (locale variable)

oder wo steht dann der string zum vergleichen (ich hoffe ich habs verstanden)

der Vergleicher ist klar (habe ich schon getestet)

Vielen Dank und ebenso guten Rutsch


Rainer :oops:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
String

der Eingabewert aus dem OP steht dort wo du ihn per Variablendeklaration in Protool festlegst. das steht nicht mit im Beispiel.

Den Index musste natürlich auch noch erhöhen. Kannst sinnigerweise auch den Schleifenzähler als Index nehmen. Wenns dich dann nicht stört dass er von hinten nach vorn macht kannst du das mit dem LOOP auch so lassen.

War nur mal schnell zusammengestammelt wie ichs mir prinzipiell vorstellen würde. Aber wieso widmest du dich nicht anderen Strings? Die sind leichter zu handhaben ;-)

MfG
André Räppel
 
Zurück
Oben