Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - String Code überprüfen
lemomo - Di 17.07.12 05:51
Titel: String Code überprüfen
Hallo Leute,
Ich fange mit Delphi noch mal nach fast 8 Jahren pause und ich habe ein Problem. Ich möchte eine Procedure die ein Datei.txt liest und überprüft ob ein String richtig ist, schreiben. Der String kommt merhmal vor und hat ein Teil als Integer (O1--,O2+-, ... O123++ ) so sehen die String aus. Es muss auch überprüft werden ob unser String auf die erste Reihe geschrieben ist und ob sein Integer Teil sich richtig inkrementiert. Der Rest Teil +- , -- oder ++ muss nicht geprüft werden . Datei lesen ist ok aber für die Überprüfunh weisse ich nicht wie ich anfangen muss. Danke schön
Beispiel datei.txt :
W1
Ich möchte ein Procedur schreiben die ein Datei.txt liest und überprüft
W1
O1-+
A
das Nichtvorliegen unrechtsausschlieáender
A
O2—
A
Zur Bestandes soll erforderlich sein:
A
O3++
Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Di 17.07.2012 um 10:53
Nersgatt - Di 17.07.12 08:01
Moin und willkommen! :welcome:
Ich hab Dein Posting jetzt mehrfach gelesen - aber ich habe trotzdem nicht verstanden, wann ein String als gültig erklärt werden soll. Kannst Du das vielleicht nochmal etwas genauer erklären?
Danke!
Jens
Tranx - Di 17.07.12 08:09
Wenn Deine Kombination der Strings
O1+ O221+ O123- .... zulässt, also beliebige Integer, so wird das nur möglich sein, wenn Du den ersten Buchstaben prüfst, obe es ein 'O', 'A' oder 'W' ist. Ist das korrekt, prüfst Du den letzten Buchstaben, ob es '+' oder '-' ist, ist das korrekt, prüfst Du zuletzt, ob dazwischen nur Ziffern stehen.
Wenn Du hinsichtlich der Vorgaben auch noch konkrete Folgen hast: z.B.
richtig:
W1+
A123-
O2+
falsch:
W2+
O1-
A123+
O2+
dann kommst Du nicht herum, diese ebenfalls in der Reihenfolge zu testen. Da ich aus Deinem Text nicht ersehe, was richtig und falsch ist, udn wie die Texte konkret aufgebaut sind, kann ich leider nicht mehr Hilfe geben.
In der Prüfprozedur könntest Du die Parameter etwa so deklarieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| function StringPruefung(const s : string; Position : Byte; const richtig : string) : boolean;
var Teil : string; Laenge : byte; Erg : boolean; begin Erg := false; Laenge := Length(s); case Position of 0 : Teil := Copy(s,1,1); 255 : Teil := Copy(s,Laenge,1); else Teil := Copy(s,Position,Laenge - Position-1); end; if Teil<>'' then begin if (Position = 0) or (Position = 255) then begin Erg := (Teil = richtig); end else begin try Erg := StrToInt(Teil)>0; except end; end; end; result := Erg; end; |
Ich habe das hier jetzt nicht getestet. Daher keine Garantie, dass es fehlerfrei funktioniert.
lemomo - Di 17.07.12 13:44
Hallo, Danke zuerst dass ihr meine Nachricht gelesen haben ich versuche nochmal das Problem zu erklären
man muss im Text, string die so Ox- oder Ox+ (ein groß O und ein x als Integer dann + oder - nach der x ist egal) geschrieben sind.wenn man ein gefunden hat muss diese überprüft werden.
1- ob O in der erste Column geschrieben ist
bsp
2- ob x sich nach der erste gefundene Ox auf 1 sich inkrementiert hat
bsp1 Für was richtig
erste gefundene O1-
zweite gefundene O2+ oder O2-
bsp2 Für was falsche ist . falsche weil nach O7 muss O8 kommen und nicht O9
erste gefundene O7-
zweite gefundene O9+ oder O10-
ich hoffe dass ich jetzt besser erklärt habe.
Mfg lemomo
Moderiert von Martok: Code-Tags hinzugefügt
bummi - Di 17.07.12 13:49
Kannst Du mal einen Ausschnitt der Datei anhängen?
FinnO - Di 17.07.12 14:50
Moin,
wenn's dir leichter fällt, kannst du sicherlich auch englisch schreiben.
Was ich bisher verstanden habe:
Der Buchstabe O scheint für einen Wert zu stehen, und es muss überprüft werden, ob die Zahlen nach dem O in der Reihenfolge betrachtet um 1 inkrementiert in der Datei vorkommen. Das Zeichen nach der Zahl also +,- etc. scheint egal zu sein.
LG
lemomo - Di 17.07.12 16:52
hallo nochmal, (als anhang ein beispiel Datei )
Finn Ole hast das Problem schon verstanden . aber hier nochmal.
ich möchte diese Datei lesen, und danach überprüfen ob:
1-. O1- oder O2 ohne Leerzeichen geschrieben ist d.h vor der O1- oder O3 muss nicht leer sein oder gar nicht geschrieben sein.
2-. O1- , O2+ , O3 sich immer nach 1 erhöhen weil es kann passiert dass nach O45- man zum beispiel O47+ geschrieben hat
die + und - nach der O1 oder O4 sind egal müssen nicht überprüft werden
Nersgatt - Mi 18.07.12 07:24
Ich würde die Datei einfach in eine TStringList einlesen. Die kannst Du dann ganz bequem zeilenweise durchgehen und prüfen, ob die Zeile mit einem O anfängt. Falls ja, dann kannst Du einfach die weiteren Prüfungen machen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!