String in Spalte durch xxx ersetzen
HI
Und zwar hab ich mal wieder folgende Frage. Wie ersetze ich in einer bestimmten Spalte in einem StringGrid die letzten drei Zeichen durch xxx in Excel habe ich es schon hinbekommen
Delphi-Quellcode:
wollte es jetzt aber mit einem klick Automatisieren??
=Links(O2;LÄNGE(O2)-3)&"xxx"
Gruß Sascha |
Re: String in Spalte durch xxx ersetzen
Wo automatisieren? In Excel? In Delphi?
|
Re: String in Spalte durch xxx ersetzen
In Delphi
und dannach speicher ich das ganze als .xls was schon Teilweise funzt |
Re: String in Spalte durch xxx ersetzen
Na, dann kannst du diese Prozedur von Deddy die wir heute Vormittag hatten entsprechend anpassen, eben nicht mehr die maximale Breite ermitteln, sondern die Stringsprüfen und ggf. die letzten 3 Zeichen ersetzen.
|
Re: String in Spalte durch xxx ersetzen
Ihr wollt mich heute ärgern :stupid:
Ich blick bei diesem code nicht durch. Erklär mir den bitte |
Re: String in Spalte durch xxx ersetzen
Also in etwa so:
Delphi-Quellcode:
Geht sicherlich noch eleganter :roll:
procedure ConvertStrings(sl:TStrings);
var i, Current: integer; begin for i := 0 to Pred(sl.Count) do s1[i]:=copy(s1[i],1,length(s1[i])-3)+'xxx' end; |
Re: String in Spalte durch xxx ersetzen
Das meine ich ja wo hole ich den TStrings her und Warum Pred(vorgänger)
|
Re: String in Spalte durch xxx ersetzen
Aufruf mit
ConvertStrings(StringGrid1.Cols[xx]); mit xx = Spaltennummer, in der ausgetauscht werden soll Pred(), weil die Indices mit 0 beginnen, das höchste Element hat dann den Index Count-1 und das ist das gleiche wie pred(Count) |
Re: String in Spalte durch xxx ersetzen
Was mach ich jetzt falsch wenn eine zelle leer ist
Delphi-Quellcode:
procedure ConvertStrings(sl:TStrings);
var i :integer; begin for i := 1 to Pred(sl.Count) do if sl[i] = '' then begin sl[i]:='leer' end else sl[i]:=copy(sl[i],1,length(sl[i])-3)+'xxx' end; procedure TForm1.Button4Click(Sender: TObject); begin ConvertStrings(StringGrid1.Cols[14]); end; |
Re: String in Spalte durch xxx ersetzen
Ich kann nichts falsches erkennen, ausser einem nicht notwendigem begin..end. Welches Ergebnis erwartest du denn? Wenn vorher nix in der Zelle war, sollte anschließend "leer" drin stehen.
|
Re: String in Spalte durch xxx ersetzen
ja das tut es aber nicht es stehen immernoch drei xxx drin??
|
Re: String in Spalte durch xxx ersetzen
Delphi-Quellcode:
copy liefert einen LeerString zurück und es werden drei x angehangen.
sl[i]:=copy(sl[i],1,length(sl[i])-3)+'xxx'
Vielleicht solltest Du vorher prüfen ob der String auch mehr als 3 Zeichen beinhaltet. Grüße Klaus |
Re: String in Spalte durch xxx ersetzen
Das mach ich doch ich prüfe vorher ob ein leer string vorhanden ist wenn ja soll er leer reinschreiben
|
Re: String in Spalte durch xxx ersetzen
Du musst prüfen, ob der String länger ist als 3 Zeichen, Du löschst ja schließlich auch 3 Zeichen raus.
|
Re: String in Spalte durch xxx ersetzen
Na irgenwie will das net wenn ich auf länger prüfe schreibt er überall leer rei
Delphi-Quellcode:
procedure ConvertStrings(sl:TStrings);
var i :integer; begin for i := 1 to Pred(sl.Count) do if sl[i] > Char(3) then begin sl[i]:='leer' end else sl[i]:=copy(sl[i],1,length(sl[i])-3)+'xxx' end; |
Re: String in Spalte durch xxx ersetzen
Sascha, heute ist nicht Dein Tag, oder?
Delphi-Quellcode:
Grüße
procedure ConvertStrings(sl:TStrings);
var i :integer; begin for i := 1 to Pred(sl.Count) do begin if length(sl[i]) <= 3 then begin sl[i]:='kleiner als 3 Zeichen' end else sl[i]:=copy(sl[i],1,length(sl[i])-3)+'xxx' end; end; Klaus [edit] delphi tags vergessen |
Re: String in Spalte durch xxx ersetzen
Wieso fangt Ihr eigentlich bei 1 an, hab ich was übersehen?
Zitat:
|
Re: String in Spalte durch xxx ersetzen
Ja Kruzifix, Sascha!
Die Behandlung auf <=3 Zeichen muss natürlich in den else-Zweig. Zunächst muss du aber einmal die Anforderung definieren: Was soll den geschehen, wenn der String nur aus 3 oder weniger Zeichen besteht? |
Re: String in Spalte durch xxx ersetzen
Zitat:
Grüße Klaus |
Re: String in Spalte durch xxx ersetzen
Hihi, gute Frage!
Zunächst hatten wir bei 0 begonnen, im Laufe des Gefechts hat sich da aber 'ne 1 eingeschlichen... // edit: Autsch!!! - Die Hitze!!!! |
Re: String in Spalte durch xxx ersetzen
Zitat:
|
Re: String in Spalte durch xxx ersetzen
Oh jetzt ist mir aufgefallen das ich das alles garnicht brauche
nein war ein scherz ich danke euch für die Mühe die ich euch heute mal wieder gemacht habe, wenn Ihr jetzt alle hier sein würdet, dann hätte ich schon längst ne Runde ausgegeben. aber jetzt geht alles danke (morgen kommt der zweite Teil :mrgreen: ) Dicken Gruß Sascha |
Re: String in Spalte durch xxx ersetzen
Würde ich trotzdem nicht so machen, dann lieber einen weiteren Parameter für den Index des ersten Elementes. Diesen kannst Du ja vorbelegen und StringGrid.FixedRows da reinschreiben. Der Grund ist, wenn Du die Anzahl der fixen Zeilen mal änderst, wirst Du Dich vermutlich zunächst wundern.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 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