| Autor |
Beitrag |
Tinky
Hält's aus hier
Beiträge: 14
|
Verfasst: So 12.02.06 11:10
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| <ol type="1"><li> for i:=0 to (PasCode2.Count-1) do begin if ProgramAnalyse(PasCode2[i])=true then begin PasEdit:=copy(PasCode2[i],8,pos(';',PasCode2[i])-8); LatCode.Lines.Add('\documentclass{article}'+chr(13)+'\usepackage{struktex}'+chr(13)+'\begin{document}'+chr(13)+'\begin{struktogramm}(90,137)['+PasEdit+']'); end; end; |
Kann mir jemand erklären warum die Bedingun 'ProgramAnalyse(PasCode2[i])=true' 2 mal true ist?
Diese Bedingung schaut nur ob sich in einer Zeile i der Liste PasCode2 das Schlüsselwort 'program' befindet wenn ja wird
dieses weiterverarbeitet, wenn nein passiert nichts.
Nun ist es so: wenn ich das Programm laufen lasse, ist diese Bedingung 2 mal wahr (in PasCode2 befindet sich aber nur eine Zeile mit dem Schlüsselwort 'program').
Kann mit jemand erklären warum das so ist?
Danke
Tinky
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: So 12.02.06 11:26
Meine Glaskugel sagt, dass an jedem Memo/RichEdit eine Leerzeile am Ende ist...
AXMD
|
|
Tinky 
Hält's aus hier
Beiträge: 14
|
Verfasst: So 12.02.06 11:58
Joa kann sein , aber auch wenn da eine Leerzeile ist müsste doch meine function (ProgramAnalyse) den Wert false zurückgeben oder?
Die function 'ProgramAnalys' macht ja nichts ausßer schauen ob am Zeilenanfang das Wort 'program' vorkommt, wenn ja liefert sich den Wert 'false' zurück.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: So 12.02.06 12:29
Hallo,
Tinky hat folgendes geschrieben: | | ...Die function 'ProgramAnalys' macht ja nichts ausßer schauen ob am Zeilenanfang das Wort 'program' vorkommt, wenn ja liefert sich den Wert 'false' zurück. |
also gibt Dir die Funktion bei allen Zeilen die nicht mit 'programm' beginnen True zurück.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Tinky 
Hält's aus hier
Beiträge: 14
|
Verfasst: So 12.02.06 12:32
ohh sry, ich meinte, dass die function ProgramAnalyse ein true zurückgibt wenn am Zeilenanfang das Wort 'program' vorkommt
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: So 12.02.06 12:46
Hallo,
wie sieht denn die Funktion ProgramAnalyse aus, denke mal da liegt das Problem.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Tinky 
Hält's aus hier
Beiträge: 14
|
Verfasst: So 12.02.06 14:21
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| function programAnalyse(str:string):boolean; var zeichen:string; begin zeichen:=copy(str,1,8); if zeichen='program ' then programAnalyse:=true; end; |
Hallo, hier ist der Code der function ProgramAnalyse;
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: So 12.02.06 14:37
Hallo,
Die initialisierung des Rückgabe-Boolean fehlt, so wie Du das jetzt hast wird sie zufällig mit True oder False vorbelegt.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| function programAnalyse(str:string):boolean; var zeichen:string; begin programAnalyse := False; zeichen:=copy(str,1,8); if zeichen='program ' then programAnalyse:=true; end; |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: So 12.02.06 14:48
Oder kürzer:
Delphi-Quelltext 1: 2: 3: 4:
| function ProgramAnalyse(AStr: String): Boolean; begin Result := (Copy(AStr, 1, 8) = 'program '); end; |
Kleiner Hinweis am Rande (hat nichts mit dem eigentlichen Thema zu tun): ich würde dir empfehlen, auf eventuell führende Leerzeichen vor 'program' zu prüfen.
AXMD
|
|
Tinky 
Hält's aus hier
Beiträge: 14
|
Verfasst: So 12.02.06 14:53
Vielen Dank,
ich habe es gestestet und es klappt nun einwandfrei 
|
|