![]() |
In einem String die ersten 4 Zeichen löschen?
Wie kann man in einem String die ersten oder die letzten 4 Zeichen löschen :?:
|
Re: In einem String die ersten 4 Zeichen löschen?
Mhhh...das ist garnicht so einfach...musste lange suchen, bis ich das fand: :roll:
Zitat:
|
Re: In einem String die ersten 4 Zeichen löschen?
Delphi-Quellcode:
uses StrUtils;
function losche4(const str:string):string; begin Result := ''; if length(str)<5 then Exit; SetLength(Result, Length(str)-4); Result := RightStr(str,length(str)-4); end; |
Re: In einem String die ersten 4 Zeichen löschen?
Zitat:
Die Loesung mit Delete bedarf wohl keiner weiteren Erklaerung, es geht aber auch mit copy:
Delphi-Quellcode:
Greetz
Str := Copy(Str, 4, Length(Str)-4);
alcaeus |
Re: In einem String die ersten 4 Zeichen löschen?
hi,
könne man nicht einfach den Pointer auf die Zeichenkette um 4 Byte weiterschieben ? so z.B.:
Delphi-Quellcode:
?
asm
add [Str],4 end; cu, stefan2005 |
Re: In einem String die ersten 4 Zeichen löschen?
@Stefan: Habe das so getestet:
Delphi-Quellcode:
Und das Ergebnis stimmt, dennoch kommt eine Zugriffsverletzung, aber frag mich bitte nicht, wieso. :gruebel:
var Str: string;
begin Str := '123456789'; asm add [Str],4; end; Caption := Str; end; |
Re: In einem String die ersten 4 Zeichen löschen?
Zitat:
Also z.B. String vorher: '1234567890' String nachher: '4567890?' Da der zweite Parameter den Count angibt, müßte das doch so heißen:
Delphi-Quellcode:
Oder wenn Du die letzten 4 Zeichen abschneiden wolltest:
Str := Copy(Str, 5, Length(Str)-4);
Delphi-Quellcode:
Oder lieg ich da jetzt falsch?! Lass mich gerne belehren :P
Str := Copy(Str, 1, Length(Str)-4);
|
Re: In einem String die ersten 4 Zeichen löschen?
Hallo derpepe,
klar sollte es 5 heissen, das kommt aber davon wenn man sich zu oft mit PHP und C rumschlaegt :wall: @Stefan2005, Matze: ich wage zu bezweifeln dass man das so machen kann. Erstens gehen hier 4 Bytes floeten (sprich sind nicht freigegebener Speicher, aber auch nicht verwendet und ihr habt auch nicht wirklich einen Pointer drauf, denn beim ersten Str:=Str+'1' wird AFAIK neuer Speicher reserviert), und zweitens hat ein der 2 GB-String (also das was man normalerweise in Delphi mit String meint) auch noch einen Referenzzaehler und noch was, und belegt auch die 4 Bytes vor der Adresse des 0. Zeichens. Ihr muesstet also 8 Bytes um 4 Bytes nach rechts kopieren, und dann erst die Adresse um 4 Byte erhoehen. IMHO ist das aber etwas von dem man die Finger lassen soll. Wenns schnell gehn soll (was solche ASM sachen ja sind), kann man sich mal die ![]() Greetz alcaeus |
Re: In einem String die ersten 4 Zeichen löschen?
ich hätte es nach wie vor so gemacht:
Delphi-Quellcode:
Delete(Str,1,4);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 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 by Thomas Breitkreuz