![]() |
Bestimmtes Zeichen aus Stringlist
Hallo,
wie kann ich ein bestimmtes Zeichen aus einem bestimmten Element einer Stringlist auslesen? Beispiel: 3. Zeichen im Element mit dem Index 6. Wie mache ich das? :-D Vielen Dank :thumb: |
Re: Bestimmtes Zeichen aus Stringlist
Du hast eine indizierte Liste von Strings, und ein String ist eine indizierte Liste von Chars. Was also spricht gegen StrList[5][3]?
|
Re: Bestimmtes Zeichen aus Stringlist
Hallo
Bitte beachte die 5 um an den 6.String der StringListe zu kommen, da der index hier 0 basiert ist. (0..5). Desweiteren ist aber in einem String der Zeichenindex 1 basierend! Auch solltest du am besten vorher checken, daß die positionen auch besetzt sind.
Delphi-Quellcode:
function MyGetChar(Const aStrings:tStrings; iLine,iPos:integer):Char;
var sTmp:String; begin { Safety } Result := #0; sTmp := ''; { Mainwork } If (iLine>=0) and (iLine<aStrings.Count) then begin sTmp := aStrings[iLine]; if (Length(sTmp)>=iPos) then Result := sTmp[iPos]; end; end; |
Re: Bestimmtes Zeichen aus Stringlist
okay vielen dank! :thumb:
eine andere sache... kann ich innerhalb der stringlist die elemente einfach verschieben? warum ich frage ist die sache, dass bei
Delphi-Quellcode:
der fehler auftritt, dass das Listenmaximum überschritten wird.
List.Exchange(i-1,i+ StrToInt(Schluessellist[i-1]));
|
Re: Bestimmtes Zeichen aus Stringlist
Zitat:
der Debugger hilft... mfg Christian |
Re: Bestimmtes Zeichen aus Stringlist
Zitat:
debugger? was kann ich tun, damit das listenmaximum nicht überschritten wird? |
Re: Bestimmtes Zeichen aus Stringlist
Hallo,
TList und alle ihre Nachfahren beiten die Methode ![]() |
Re: Bestimmtes Zeichen aus Stringlist
Bei
Delphi-Quellcode:
und
List.Exchange(i-1,i+ StrToInt(Schluessellist[i-1]));
Delphi-Quellcode:
entsteht der gleiche Fehler! :gruebel:
List.Move(i-1,i+ StrToInt(Schluessellist[i-1]))
|
Re: Bestimmtes Zeichen aus Stringlist
|
Re: Bestimmtes Zeichen aus Stringlist
Ich konnte nichts finden...die Variablen stimmen alle :gruebel:
Ich verstehe auch nicht warum das zu groß ist?
Delphi-Quellcode:
Das Programm macht ja schon beim ersten Durchlauf (i=1) einen Fehler.
for i := 1 to length (Schluessel) do
begin List.Exchange(i-1,i+ StrToInt(Schluessellist[i-1])); List.Sort; end; Folgendes steht ja dann da:
Delphi-Quellcode:
Ich versteh das nicht?!
List.Exchange(0, 1 + {Ziffer im Element mit dem Index 0 in der Schluessellist});
|
Re: Bestimmtes Zeichen aus Stringlist
Was steht in Schlüssellist? Wie viele Elemente?
Gruß oki |
Re: Bestimmtes Zeichen aus Stringlist
Deine List hat genau Count Elemente. Da Listen 0-basiert sind gibt es also die Elemente List[0] bis List[List.Count-1]. Wenn dein i+was_auch_immer also größer oder gleich List.Count ist, dann hast du ein Problem ...
Mit dem Debugger kannst Du in der Zeile die den Fehler erzeugt dein Programm anhalten (= Haltepunkt) und dir dann ansehen, was Schluessellist[i-1] enthält, das sollte dich auf die richtige Spur bringen. |
Re: Bestimmtes Zeichen aus Stringlist
Wenn ich das anhalte steht da:
Schluessellist = () Werde ich daraus schlauer? |
Re: Bestimmtes Zeichen aus Stringlist
Zitat:
|
Re: Bestimmtes Zeichen aus Stringlist
ja...!? :wiejetzt:
|
Re: Bestimmtes Zeichen aus Stringlist
Was ist deine schluessellist den eigentlich? Wenn ich mir das StrToInt ansehe dann sollte es eine TStringList sein. Und wenn Du dir mit dann über Auswerten/Ändern schluessellist[i-1] ansiehst solltest du den String an dieser Position der Liste sehen können ... also z.B.: '8' ...
|
Re: Bestimmtes Zeichen aus Stringlist
Die Liste enthält verschiedene Zahlen zwischen 1 und 26, z.B.
3 0 21 8 3 Der Wert wird ja eben nicht angezeigt! Habe noch eine andere Variante ausprobiert, wo die Elemente nicht verschoben werden, sondern an die richtige Stelle in eine andere Liste eingefügt werden:
Delphi-Quellcode:
Leider tritt da eine Zugriffsverletzung auf?? :wall:
List2.Insert(i+ StrToInt(Schluessellist[i-1]), List.Strings[i-1]);
|
Re: Bestimmtes Zeichen aus Stringlist
Mach mir die Freude und arbeite das
![]() Ausserdem, bleib doch bitte bei deinem vorherigen Entwurf und schau das du ihn zum Laufen bekommst! Mit Insert machst du dir das Leben nur noch schwieriger! |
Re: Bestimmtes Zeichen aus Stringlist
Ok ich werde morgen früh mal schauen :) Vielen Dank ;)
|
Re: Bestimmtes Zeichen aus Stringlist
Vielen Dank! Es klappt soweit, wie ich es mir vorstelle.
Habe aber noch eine letzte Frage: Wie kann ich z.B. das erste Zeichen in einem Element der Liste löschen? |
Re: Bestimmtes Zeichen aus Stringlist
|
Re: Bestimmtes Zeichen aus Stringlist
Ja das bezieht sich auf Strings...wie wende ich das bei Stringlisten an?
Delphi-Quellcode:
Er soll praktisch die ersten Beiden Zeichen in den Elementen der Liste Löschen.
for i := 0 to Ende von der Stringlist do
begin Delete(List[i],0,2); end; Funktioniert aber so leider nicht :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 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