Toon posts:

Delphi 2005 error bij end; die ik niet kan verklaren

Pagina: 1
Acties:
  • 30 views sinds 30-01-2008

Verwijderd

Topicstarter
ik heb op delphi.about.com gekeken, maar kan er maar niet achter komen waarom ik een error krijg in de laatste regel van mijn syntax. Hi geeft aan dat hij op het eind een ';' verwachtte ipv een punt, maar dat lost het probleem ook niet op. dan zegt hij dat hij daarna 'begin' verwacht, ipv het einde van de file.

Delphi:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
procedure TfrmOpgave3.btnLeesTekstClick(Sender: TObject);

function Converteer(teken: Char): Integer;

var
  invoer: String;
  lengte: Integer;
  i: Integer;
  asciiwaarde: Integer;
  String2: String;


begin

// Lees editbox uit
  invoer := edtTekst.Text;

// Bepaal lengte van de invoer
  lengte := Length(invoer);
   i := 0;

  if lengte > 0 then
  for lengte := lengte -1 downto 0 do begin

    i := i + 1;
    asciiwaarde := Ord(invoer[i]) - 96;

    if asciiwaarde = (-50) then
      asciiwaarde := 27;

    if asciiwaarde = (-52) then
      asciiwaarde := 28;

    if asciiwaarde = (-64) then
      asciiwaarde := 0;

  end;

  if asciiwaarde = 0 then begin
    memRechts.lines.add(string2);
    string2 := '';
  end;

  if asciiwaarde > 0 then begin
  string2 := string2 + InttoStr(asciiwaarde) + ' ';
  end;

end.

[ Voor 0% gewijzigd door RobIII op 01-10-2006 20:39 ]


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 11-02 11:39

Tukk

De α-man met het ẞ-brein

Het betekend dat je ergens in de code een ; moet zetten.

Gebruik de [code][/code] tags als je code post.
Lijkt je dit ook geen zelf-uitzoek-vraag?

edit:
Welkom op GoT :w
Uitleg over de mogelijke tags staat in de FAQ.

[ Voor 18% gewijzigd door Tukk op 01-10-2006 18:16 ]

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


Verwijderd

Topicstarter
ja, maar dat is het hem nou net. Volgens mij moet er geen ; meer bij. En ik heb ook op het forum van mijn studie al gepost en het boek van een huisgenootje doorgespit, maar waar moet je uberhaupt op zoeken? Volgens mij hoort hij nou gewoon geen error te geven, dus ik dacht: 'misschien kijk ik wel gewoon over iets onbenulligs heen'.

Verwijderd

Je begint met een procedure en vervolgens definieer je in die procedure een inline functie,
de procedure zelf heeft geen code ?
Of is dat procedure ding alleen een declaratie ?

haal de volgende regel is weg:
function Converteer(teken: Char): Integer;

je roept toch geen functie aan in je code ?

[ Voor 27% gewijzigd door Verwijderd op 01-10-2006 18:27 ]


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 18:54

Reptile209

- gers -

Delphi:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
procedure TfrmOpgave3.btnLeesTekstClick(Sender: TObject);

function Converteer(teken: Char): Integer;  // <<<<<<<<<<<<< deze heb je niet nodig
var
  invoer: String;
  lengte: Integer;
  i: Integer;
  asciiwaarde: Integer;
  String2: String;
begin

  // Lees editbox uit
  invoer := edtTekst.Text;

  // Bepaal lengte van de invoer
  lengte := Length(invoer);
  i := 0;

  if lengte > 0 then
  for lengte := lengte -1 downto 0 do 
    begin
      i := i + 1;
      asciiwaarde := Ord(invoer[i]) - 96;
  
      if asciiwaarde = (-50) then
        asciiwaarde := 27;
  
      if asciiwaarde = (-52) then
        asciiwaarde := 28;
  
      if asciiwaarde = (-64) then
        asciiwaarde := 0;
    end;
  
    if asciiwaarde = 0 then 
    begin
      memRechts.lines.add(string2);
      string2 := '';
    end;
  
    if asciiwaarde > 0 then 
    begin
      string2 := string2 + InttoStr(asciiwaarde) + ' ';
    end;
  
end;  // <<<<<<<<<<<<<<< deze ben je vergeten

end.

Je probeert nu een functie in een procedure te stoppen. Dat kan wel, maar heb je niet nodig en zorgt nu (mede) voor fouten. Eén ding tegelijk proberen :). Volgens mij is bovenstaande code beter (zie commentaar), maar niet getest.

Zo scherp als een voetbal!


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Hoi, welkom op GoT.

Hier in PRG zijn we er om je programmeerproblemen op te lossen; echter, dit is eerder een syntax - probleem. Met een beetje moeite en het opzoeken van de juiste syntax, en kijken naar de structuur van je code, kan je dit probleem eigenlijk zelf best oplossen.

Zoals reeds gezegd: je maakt een functie in een procedure; heeft dat wel zin ? Waarom doe je dat ? Definieer die functie buiten de procedure en gebruik ze in de functie.

https://fgheysels.github.io/


Verwijderd

Niks mis met het definieren van een function binnen een procedure in Delphi, en het kan je helpen lange lappen code overzichtelijk te houden. Een vorm van refactoring van voordat de term 'refactoring' bestond. :)

Maar dan is 't wel handig dat je die function op z'n minst eenmaal in je procedure aanroept... :+

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Syntaxfouten duiden altijd op een vergeten openings- of sluithaakje danwel een vergeten begin of end, of een fout in de quotes of puntkomma's. Met een beetje debuggen moet je daar dan ook zelf uit kunnen komen. Je hebt je code al redelijk netjes uitgelijnd; simpelweg even alle begins en ends natellen had je probleem al opgelost, en daar heb je ons dus niet echt voor nodig. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.