![]() |
Frage zu falscher Fehlermeldung bei for-schleifen
Hey,
ich hab das heir geschrieben :
Delphi-Quellcode:
dann bekomme ich diese fehlermeldung : [Pascal Warnung] Unit1.pas(640): W1015 FOR-Schleifenvariable 'I' kann nicht als Var-Parameter weitergegeben werden
procedure TForm1.Scrollen;
var I : Integer ; procedure MemoScrollbar(var MeNu: Integer); var Memo : TMemo; begin Memo := FindComponent('Memo' + IntToSTr(MeNu)) as TMemo; If (Memo.Lines.Count > 5) Then Memo.ScrollBars := ssVertical; end; begin For i := 1 To 8 do MemoScrollbar(i); end; wieso bekomme ich die ? wo ist der fehler ? und das was mic ham meisten wundert wieso funktioniert der code wenn ich 'ne fehlermeldung bekomme ? also der code übergibt i als parameter das klappt einwandfrei aber wieso dann die fehlermeldung ? |
Re: Frage zu falscher Fehlermeldung bei for-schleifen
Man darf Schleifenvariablen nicht verändern. Wird ein Parameter als Var übergeben wäre das prinzipiell möglich.
|
Re: Frage zu falscher Fehlermeldung bei for-schleifen
Hallo,
Zitat:
Zitat:
Behebung erfolgt, indem das var weggenommen wird, oder ein const drausgemacht wird (ist aber nicht notwendig) . Heiko |
Re: Frage zu falscher Fehlermeldung bei for-schleifen
In deinem Fall könntest du das var einfach weglassen
|
Re: Frage zu falscher Fehlermeldung bei for-schleifen
ah okay
wenn ich jetzt frage "wann kann man das weglassen und wann muss es dableiben" bekomme ich dann die antwort 'mach für jede frage nen neuen post auf' ?! |
Re: Frage zu falscher Fehlermeldung bei for-schleifen
Wie ich oben geschrieben habe, wenn der übergebene Wert von der Funktion/Prozedur geändert werden können soll.
|
Re: Frage zu falscher Fehlermeldung bei for-schleifen
Hallo,
Delphi-Quellcode:
procedure foo_1(i: Integer);
begin i:= i+1; end; procedure foo_2(var i: Integer); begin i:= i+1; end; var k: Integer; begin k:= 1; foo_1(k); k ist immer noch 1 foo_2(k); k ist 2 Deine Warnung besagt, dass obwohl du die Schleifenvariable an eine "var Methode" übergeben hast, sie nicht geändert werden kann. Sie liegt fest in einem Register. Falls du diese Variable also doch verändern würdest (wie in foo_2), würde das nichts bringen. Un um dir das endlose Gesuche zu ersparen, erzeugt der Compiler die Warnung. Heiko |
Re: Frage zu falscher Fehlermeldung bei for-schleifen
Zitat:
Zu Deiner eigentlichen Frage: Funktionen können nun mal nur einen Wert zurück lieferen. Nun kann es aber sein, dass Du weitere Infos zurück haben möchtest (einfaches Bsp.):
Delphi-Quellcode:
Hier erhälst Du zurück, ob das Anlegen einer Datei geklappt hat und falls nicht, kannst Du noch IOResult auswerten.
function CreateFile(AFileName: string; var IOResult: integer): boolean;
var FOut: System.Text; begin {$I-} System.AssignFile(FOut, AFileName); System.Rewrite(FOut); {$I+} IOResult:= System.IOResult; Result:= IOResult = 0; end; procedure Test; var IOResult: integer; begin if not CreateFile('dummy.txt', IOResult) then begin {IOResult auswerten} end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz