Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bestimmtes Zeichen aus Stringlist (https://www.delphipraxis.net/101793-bestimmtes-zeichen-aus-stringlist.html)

mo_greene 18. Okt 2007 00:36


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:

Dax 18. Okt 2007 00:44

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]?

peschai 18. Okt 2007 05:51

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;

mo_greene 18. Okt 2007 07:57

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:
List.Exchange(i-1,i+ StrToInt(Schluessellist[i-1]));
der fehler auftritt, dass das Listenmaximum überschritten wird.

r2c2 18. Okt 2007 08:45

Re: Bestimmtes Zeichen aus Stringlist
 
Zitat:

Zitat von mo_greene
Delphi-Quellcode:
List.Exchange(i-1,i+ StrToInt(Schluessellist[i-1]));
der fehler auftritt, dass das Listenmaximum überschritten wird.

Ich schätze mal i+ StrToInt(Schluessellist[i-1]) wird zu groß...
der Debugger hilft...

mfg

Christian

mo_greene 18. Okt 2007 19:37

Re: Bestimmtes Zeichen aus Stringlist
 
Zitat:

Zitat von r2c2
Zitat:

Zitat von mo_greene
Delphi-Quellcode:
List.Exchange(i-1,i+ StrToInt(Schluessellist[i-1]));
der fehler auftritt, dass das Listenmaximum überschritten wird.

Ich schätze mal i+ StrToInt(Schluessellist[i-1]) wird zu groß...
der Debugger hilft...

mfg

Christian

verstehe ich nicht ganz :oops:
debugger? was kann ich tun, damit das listenmaximum nicht überschritten wird?

Namenloser 18. Okt 2007 19:40

Re: Bestimmtes Zeichen aus Stringlist
 
Hallo,

TList und alle ihre Nachfahren beiten die Methode Delphi-Referenz durchsuchenMove an, mit der du Elemente verschieben kannst.

mo_greene 18. Okt 2007 19:53

Re: Bestimmtes Zeichen aus Stringlist
 
Bei

Delphi-Quellcode:
List.Exchange(i-1,i+ StrToInt(Schluessellist[i-1]));
und
Delphi-Quellcode:
List.Move(i-1,i+ StrToInt(Schluessellist[i-1]))
entsteht der gleiche Fehler! :gruebel:

r2c2 18. Okt 2007 20:17

Re: Bestimmtes Zeichen aus Stringlist
 
Debugger

mfg

Christian

mo_greene 18. Okt 2007 21:46

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:
  for i := 1 to length (Schluessel) do
  begin
    List.Exchange(i-1,i+ StrToInt(Schluessellist[i-1]));
    List.Sort;
  end;
Das Programm macht ja schon beim ersten Durchlauf (i=1) einen Fehler.
Folgendes steht ja dann da:

Delphi-Quellcode:
List.Exchange(0, 1 + {Ziffer im Element mit dem Index 0 in der Schluessellist});
Ich versteh das nicht?!

oki 18. Okt 2007 22:00

Re: Bestimmtes Zeichen aus Stringlist
 
Was steht in Schlüssellist? Wie viele Elemente?

Gruß oki

Whookie 18. Okt 2007 22:00

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.

mo_greene 18. Okt 2007 22:16

Re: Bestimmtes Zeichen aus Stringlist
 
Wenn ich das anhalte steht da:

Schluessellist = ()

Werde ich daraus schlauer?

Whookie 18. Okt 2007 22:19

Re: Bestimmtes Zeichen aus Stringlist
 
Zitat:

Zitat von mo_greene
Schluessellist = ()

oben steht auch Schluessellist[i-1] oder?

mo_greene 18. Okt 2007 22:24

Re: Bestimmtes Zeichen aus Stringlist
 
ja...!? :wiejetzt:

Whookie 18. Okt 2007 22:34

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' ...

mo_greene 18. Okt 2007 22:48

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:
List2.Insert(i+ StrToInt(Schluessellist[i-1]), List.Strings[i-1]);
Leider tritt da eine Zugriffsverletzung auf?? :wall:

Whookie 18. Okt 2007 22:54

Re: Bestimmtes Zeichen aus Stringlist
 
Mach mir die Freude und arbeite das Debugger-Tutorial mal durch, dann zeigt dir dein Delphi auch alles an ;)

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!

mo_greene 18. Okt 2007 22:57

Re: Bestimmtes Zeichen aus Stringlist
 
Ok ich werde morgen früh mal schauen :) Vielen Dank ;)

mo_greene 19. Okt 2007 12:21

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?

r2c2 19. Okt 2007 12:26

Re: Bestimmtes Zeichen aus Stringlist
 
http://r2c2.weingut-rehn.de/content3...mit_Delphi.htm

mfg

Christian

mo_greene 19. Okt 2007 13:06

Re: Bestimmtes Zeichen aus Stringlist
 
Ja das bezieht sich auf Strings...wie wende ich das bei Stringlisten an?

Delphi-Quellcode:
  for i := 0 to Ende von der Stringlist do
  begin
    Delete(List[i],0,2);
  end;
Er soll praktisch die ersten Beiden Zeichen in den Elementen der Liste Löschen.
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