![]() |
Buchstabensuche !aller! Felder
Folgendes Problem.. ich moechte eine Suchfunktion machen (nur für Buchstaben).. diese funktion soll mir alle Stellen (Felder) von a liefern an denen der Buchstabe = dem gesuchtem ist!
ich hab dann diese function geschrieben er meint dauernd fehler aber ich erkenne ihn nirgends!!!
Delphi-Quellcode:
function suche2(buchstabe:string):integer;
var i2:integer; begin for i2:=1 to nf do begin if a[i2] <> buchstabe[1] then Inc(i2) // <--- Hier soll Fehler sein else begin suche2:=suche2 + i2 + ','; Inc(i2); end end end; hoffe ihr könnt mir helfen |
Re: Fehler im Code.. aber wo?
In for-Schleifen darfst Du die Zählvariable nicht innerhalb der Schleife ändern.
|
Re: Fehler im Code.. aber wo?
Du könntest die Schleife aber z.B. in eine While-Schleife umbauen.
|
Re: Fehler im Code.. aber wo?
Dann wird es aber spätestens an der Zeile
Delphi-Quellcode:
scheitern ;)
suche2:=suche2 + i2 + ',';
|
Re: Fehler im Code.. aber wo?
Ja, er sollte sich mal die Grundlagen von Delphi ansehen.
|
Re: Fehler im Code.. aber wo?
sucht mal in der OH nach Pos und nach PosEx
gruss Thorben |
Re: Fehler im Code.. aber wo?
hm.. wie kann ich denn sonst "alle" werte überprüfen.. also nehmen wir mal an ich habe 5 Felder
1 A 2 V 3 A 4 A 5 S und ich will jetzt nach A suchen.. jetzt möchte ich das er mir ausgibt 1, 3 und 4 das wollte ich mit dieser funktion erreichen.. mir faellt jetzt aber nix ein wie das funktionieren würde |
Re: Fehler im Code.. aber wo?
Entweder ein String als Rückgabe, dann geht es so, wie Du gecodet hast, oder z.B. eine TList als Var-Parameter übergeben.
|
Re: Fehler im Code.. aber wo?
Nimm diese Funktion und rufe diese in einer For_Schleife auf oder in einem repeat...until Block auf :
Delphi-Quellcode:
Diese Funktion gibt Dir die Position des Suchstrings aus. Wird der Suchstring nicht gefunden ist das Ergebnis 0.
function PosN(Substring, Mainstring: string; n: Integer): Integer;
begin if Pos(substring, mainstring) = 0 then begin posn := 0; Exit; end else begin if n = 1 then posn := Pos(substring, mainstring) else begin posn := Pos(substring, mainstring) + posn(substring, Copy(mainstring, (Pos(substring, mainstring) + 1), Length(mainstring)), n - 1); end; end; end; |
Re: Fehler im Code.. aber wo?
hm.. als string wiedegeben? is das nich ein wiederspruch in sich weil doch das feld integer ist.. oder kann ich da sagen inttostr?
hm.. mit Tlist habe ich noch nie gearbeitet.. delphi hilfe war auch nich gerade überhaeuft mit infos.. könntet ihr mir da vllt ein paar infos zuschieben? @Rwarnecke danke für diesen code.. allerdings verstehe ich diesen nicht ganz und möchte ihn daher nicht blind benutzen.. mir wäre es lieber wenn ich alles genau verstehe.. allerdings faengts schon bei sub und mainstring an... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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