Autor Beitrag
lemomo
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 17.07.12 05:51 
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 user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 17.07.2012 um 10:53
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: 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:

ausblenden volle Höhe 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;
// Position:  255 : Ende des Strings
//            0 : Anfang des Strings
//            1 .. 254 : Position innerhalb des Strings

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 = 0or (Position = 255then 
    begin
      Erg := (Teil = richtig);
    end
    else
    begin
      try
        Erg := StrToInt(Teil)>0;
      except
        //....  hier Prozeduren euinfügen, falls das keine Zahl ist, was dazwischen steht
      end;  
    end;
  end;
  result := Erg;
end;


Ich habe das hier jetzt nicht getestet. Daher keine Garantie, dass es fehlerfrei funktioniert.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
lemomo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
ausblenden Quelltext
1:
2:
O und nicht 
 O

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 user profile iconMartok: Code-Tags hinzugefügt
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 17.07.12 13:49 
Kannst Du mal einen Ausschnitt der Datei anhängen?

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
Einloggen, um Attachments anzusehen!
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
DonManfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148
Erhaltene Danke: 2

Windows 7
Delphi XE3 Pro + HTML5Builder
BeitragVerfasst: Do 19.07.12 07:18 

_________________
Gruss Manfred