Autor Beitrag
Tinky
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 12.02.06 11:10 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 12.02.06 11:26 
Meine Glaskugel sagt, dass an jedem Memo/RichEdit eine Leerzeile am Ende ist...

AXMD
Tinky Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: So 12.02.06 12:29 
Hallo,
user profile iconTinky 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 12.02.06 14:21 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 12.02.06 14:48 
Oder kürzer:

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 12.02.06 14:53 
Vielen Dank,

ich habe es gestestet und es klappt nun einwandfrei :)