| Autor |
Beitrag |
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Sa 18.04.09 18:17
Ich möchte einen Teilstring aus einem "großen" String erhalten und möchte dafür die letzten zwölf (!) Zeichen abschneiden. ALSO DEN REST IN DER HAND HALTEN!!
Ich verstehe aber jetzt nicht ob ich die 12 in "Index" oder in "Count" schreiben soll.
Die Zeichenlänge der vorderen Zeichen ist unbekannt!!
_________________ Die Lösung ist nicht siebzehn.
Zuletzt bearbeitet von Mitmischer 1703 am Sa 18.04.09 18:42, insgesamt 1-mal bearbeitet
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 18.04.09 18:21
Dann wäre Index wohl Length(meinString) - 12 und Count wäre 12.
_________________ We are, we were and will not be.
|
|
Mitmischer 1703 
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Sa 18.04.09 18:26
Klar, Length gibts auch noch...
In der DF steht: Copy gibt einen Teilstring oder ein Teilarray zurück, das Count Zeichen oder Elemente ab S[Index] enthält
Müsste Index dann nicht 0 sein und Count Length(StringTeil - 12)?
_________________ Die Lösung ist nicht siebzehn.
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Sa 18.04.09 18:47
Hi
Ehe du jetzt "S := Copy(S, ..); machst: Es gibt auch noch Delete(), das ist glaube ich bi langen Strings performancemäßig gesehen ein bisschen günstiger.
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 18.04.09 18:48
Ansonsten ist der Index 1 (Strings beginnen bei 1) bis Length(StringTeil - 12) (+/- 1, ausprobieren). Oder eben Delete.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 18.04.09 18:50
Ups, hatte das falsch gelesen. Ich dachte, du wolltest die letzten 12 Zeichen haben. Dann würde ich Index auch auf 1 setzen, denn ein String fängt bei 1 an, nicht bei 0 wie dynamische Arrays.
_________________ We are, we were and will not be.
|
|
Mitmischer 1703 
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Sa 18.04.09 19:16
Aus irgendeinem Grund muss ich zwar 13 Zeichen abschneiden, aber ansonsten funktioniert der Code!
Danke!
Edit: Tja, wie man sich irren kann...
An JEDEN String hängt die Prozedur ein "f"... Wie löscht der?
Das ist der Code:
Delphi-Quelltext 1:
| Delete(S, Length(S) - 12, 12); |
Aber es wird immer das f beibehalten (Zur Erläuterung: Die Strings sind Dateinamen von Prefetchdateien, also *.pf!
_________________ Die Lösung ist nicht siebzehn.
Zuletzt bearbeitet von Mitmischer 1703 am Sa 18.04.09 19:33, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 18.04.09 19:28
Wahrscheinlich, weil du Length()-1 nimmst, das ist falsch.
Richtig: Delphi-Quelltext 1:
| Copy(S, Length(S) - 11, 12); | Denn Length(S) ist ja der letzte Buchstabe bereits. 
|
|
Mitmischer 1703 
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Sa 18.04.09 19:35
@Jaenicke: Der Code funktioniert. Kannst du mir das mal erklären?
_________________ Die Lösung ist nicht siebzehn.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 18.04.09 19:44
Beispiel, nehmen wir den String "Das ist ein Test!": Quelltext 1: 2:
| D a s _ i s t _ e i n _ T e s t ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | So, jetzt willst du die letzten 12 Buchstaben. Das heißt die Buchstaben 6 bis 17 (die ersten 5 ja nicht).
Length(S) ist 17, also der letzte Buchstabe, wenn ich von da aus einen kopiere, dann wäre das der letzte (ohne Length() - 1 oder so als Start). Ich will aber 11 Buchstaben weiter links anfangen, also 17 - 11 = 6. Und von da aus sind das dann die letzten 12 Buchstaben.
Du kannst natürlich auch einfach die Unit StrUtils einbinden und RightStr benutzen: Delphi-Quelltext 
|
|
|