AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi In einem String die ersten 4 Zeichen löschen?
Thema durchsuchen
Ansicht
Themen-Optionen

In einem String die ersten 4 Zeichen löschen?

Ein Thema von Delphi Star · begonnen am 18. Mär 2005 · letzter Beitrag vom 19. Mär 2005
Antwort Antwort
Delphi Star

Registriert seit: 4. Apr 2004
432 Beiträge
 
Delphi 2005 Personal
 
#1

In einem String die ersten 4 Zeichen löschen?

  Alt 18. Mär 2005, 23:09
Wie kann man in einem String die ersten oder die letzten 4 Zeichen löschen
Real programmers code in binary
SwapIt: Punkte
  Mit Zitat antworten Zitat
Benutzerbild von gmarts
gmarts

Registriert seit: 4. Apr 2004
Ort: Templin
290 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: In einem String die ersten 4 Zeichen löschen?

  Alt 18. Mär 2005, 23:13
Mhhh...das ist garnicht so einfach...musste lange suchen, bis ich das fand:
Zitat:
Unit

System

Kategorie

String-Verarbeitung

procedure Delete(var S: string; Index, Count:Integer); Beschreibung

Delete entfernt, beginnend mit S[Index], Count Zeichen aus dem String S. S ist eine String-Variable. Index und Count sind Integer-Ausdrücke.

Ist der Wert von Index größer als die Länge von S oder kleiner 1, werden keine Zeichen gelöscht.

Werden mit Count mehr Zeichen angegeben, als beginnend bei Index im String vorhanden sind, wird der Rest des Strings gelöscht. Wenn Count kleiner als 0 ist, werden keine Zeichen gelöscht.
procedure TForm1.Button1Click(Sender: TObject);
begin
button1.Click;
end;
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: In einem String die ersten 4 Zeichen löschen?

  Alt 18. Mär 2005, 23:14
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;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: In einem String die ersten 4 Zeichen löschen?

  Alt 18. Mär 2005, 23:18
Zitat von sniper_w:
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;
Sorry, aber eine sehr uneffiziente Variante. Du kopierst den String komplett, d.h. wenn du einen 1 GB langen String hast, dann hast du danach 2 1 GB lange Strings
Die Loesung mit Delete bedarf wohl keiner weiteren Erklaerung, es geht aber auch mit copy:
Str := Copy(Str, 4, Length(Str)-4); Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#5

Re: In einem String die ersten 4 Zeichen löschen?

  Alt 18. Mär 2005, 23:43
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: In einem String die ersten 4 Zeichen löschen?

  Alt 18. Mär 2005, 23:53
@Stefan: Habe das so getestet:

Delphi-Quellcode:
var Str: string;
begin
  Str := '123456789';

  asm
    add [Str],4;
  end;

  Caption := Str;
end;
Und das Ergebnis stimmt, dennoch kommt eine Zugriffsverletzung, aber frag mich bitte nicht, wieso.
  Mit Zitat antworten Zitat
Benutzerbild von derpepe
derpepe

Registriert seit: 16. Mär 2005
Ort: Dotternhausen
164 Beiträge
 
Delphi 2005 Personal
 
#7

Re: In einem String die ersten 4 Zeichen löschen?

  Alt 19. Mär 2005, 01:19
Zitat von alcaeus:
Str := Copy(Str, 4, Length(Str)-4);
Ähm, das kopiert doch ab dem 4. Zeichen, oder seh ich das falsch!?

Also z.B.
String vorher: '1234567890'
String nachher: '4567890?'

Da der zweite Parameter den Count angibt, müßte das doch so heißen:
Str := Copy(Str, 5, Length(Str)-4); Oder wenn Du die letzten 4 Zeichen abschneiden wolltest:
Str := Copy(Str, 1, Length(Str)-4); Oder lieg ich da jetzt falsch?! Lass mich gerne belehren
Peter J. Schneider
http://raketenwerfer.de/programmieren/delphi/index.html
Nes dar in da kev, sed un est a log!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: In einem String die ersten 4 Zeichen löschen?

  Alt 19. Mär 2005, 05:16
Hallo derpepe,

klar sollte es 5 heissen, das kommt aber davon wenn man sich zu oft mit PHP und C rumschlaegt

@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 FastStrings-Unit ansehn.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#9

Re: In einem String die ersten 4 Zeichen löschen?

  Alt 19. Mär 2005, 09:24
ich hätte es nach wie vor so gemacht:

Delete(Str,1,4);
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz