AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lokaler Variablen Fehler

Ein Thema von philiph · begonnen am 7. Jan 2006 · letzter Beitrag vom 7. Jan 2006
Antwort Antwort
philiph
(Gast)

n/a Beiträge
 
#1

Lokaler Variablen Fehler

  Alt 7. Jan 2006, 08:15
Hallo,

ich habe ein Problem (er sagt:[Warnung] Unit1.pas(104): W1019 FOR-Schleifenvariable muss eine einfache lokale Variable sein) mit diesem Stück Code finde es aber nicht könnte mir vieleicht jemand helfen?


Delphi-Quellcode:
for i := 1 to length(a) do
if a[i] in Edit2.text then
begin
delete(a, i, 1);
end;
RichEdit1.Lines.Add(a);
end else
RichEdit1.Lines.Add(a);
end
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Lokaler Variablen Fehler

  Alt 7. Jan 2006, 08:23
Hallo.

die Laufvariable für deine Schleife muss in deiner Delphi Version im gleichen Block deklariert sein, in dem sich auch die Schleife befindet:

Delphi-Quellcode:
procedure AddCleanLine;
var
  i: Integer;
begin
  for i := Length(a) downto 1 do
    if Pos(a[i], Edit2.text) > 0 then
      Delete(a, i, 1);
  RichEdit1.Lines.Add(a);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
philiph
(Gast)

n/a Beiträge
 
#3

Re: Lokaler Variablen Fehler

  Alt 7. Jan 2006, 08:40
Also den ungefähren Fehler hab ich verstanden aber,

wenn in edit2 z.b steht: #

und der zu Filternde Text(das ist in meinem Falle ja der Sinn der FOR Schleife): #T#e#s#t

ist dann macht der Code daraus das:

T#e#s#t

Te#s#t

Tes#t

Test

wieso?


PS:danke für die Hilfe
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Lokaler Variablen Fehler

  Alt 7. Jan 2006, 09:05
Das muss ein ganz anderer Code sein, mit dem du dieses Ergebnis produzierst. Hier habe ich dir einen besseren Code entwickelt. Er kapselt die Funktionalität in einer wiederverwendbaren Prozedur und achtet darauf, dass bei größeren Strings der Speichermanager durch das zeichenweise Löschen nicht unnötig gequält wird, indem ich die gültigen Zeichen einfach verschiebe.

Delphi-Quellcode:
procedure AddCleanLine(strings: TStrings; const sLine, sFilter: string);
var
  i, iLength: Integer;
  sClean: string;
begin
  iLength := Length(sLine);
  sClean := sLine;
  i := 1;
  while i <= iLength do
    if Pos(sClean[i], sFilter) > 0 then
    begin
      Move(sClean[Succ(i)], sClean[i], iLength - i);
      Dec(iLength);
    end else Inc(i);
  strings.Add(Copy(sClean, 1, iLength));
end;

procedure TDemoForm.AddButtonClick(Sender: TObject);
begin
  AddCleanLine(RichEdit1.Lines, '#T#e#s#t', Edit2.Text);
end;
marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz