![]() |
Stringgrid Spielerei... Fragen!
Hallo liebes Community
Ich wollte mal heute mit einem neuen Komponenten arbeiten, mit dem ich noch nie etwas am Hut gehabt ich speichere in ein array -->( namen:array[0..4] of string;) ein paar Namen ab ( zb. 'Peter Lustig' ). Dann will ich, dass die jeweiligen Namen in 2 teilen aufgesplittet werden vn (vorname) =Peter & nn (nachname)=Lustig. Soweit,so gut! Wenn ich die vn bzw nn einfügen will, erscheint im Stringgrid an der bestimmten Stelle etwas Komisches... Kann sein das beim splitten etwas schief gegangen ist :S hier der code:
Delphi-Quellcode:
var i,j:integer;
vn,nn,name:string; ...... for j := 0 to 4 do begin for i := 0 to length(namen[j]) do begin name:=namen[j]; if name[i]=' ' then begin vn:=copy(name,0,length(name[i])-1); nn:=copy(name,length(name[i])+1,length(name)); //nn:=delete(name,0,length(vn)+2); --> so müsste das eigentlich auch gehen aber funzt ned.. :( end; end; stringgrid1.Cells[2,j+1]:=vn; stringgrid1.Cells[3,j+1]:=nn; end; |
Re: Stringgrid Spielerei... Fragen!
1.
Das erste Element eines Strings hat den Index 1, nicht 0. Die innere Schleife müsste also so aussehen:
Delphi-Quellcode:
2.
for i := 1 to length(namen[j]) do
Delphi-Quellcode:
gibt dir sehr Wahrscheinlich immer 1 zurück, da name[i] nur ein Zeichen (des Strings) ist ;)
length(name[i])
Wenn du den String von 1 bis zur Position i-1 haben willst, müsste das wohl so aussehen:
Delphi-Quellcode:
Überlege selbst, wie nun das zweite Copy aussehen müsste.
copy(name, 1, i - 1);
3. Tipps: Du kannst dir das Leben viel einfacher machen, denn es gibt die Funktion:
Delphi-Quellcode:
Diese gibt dir die Position eines Substrings in einem String zurück.
function Pos(const substr: string; const str: string): Integer;
Du könntest z.B. ' ' (Leerzeichen) als Substring übergeben und sparst dir somit die innere Schleife ;)
Delphi-Quellcode:
i := Pos(' ', name);
|
Re: Stringgrid Spielerei... Fragen!
vielen dank,funzt..
Delphi-Quellcode:
ich werd wohl nächstes Mal nicht mehr so spät programmieren.. :???:
for j := 0 to 4 do begin
for i := 1 to length(namen[j]) do begin name:=namen[j]; if name[i]=' ' then begin vn:=copy(name,1,i-1); nn:=copy(name,i+1,length(name)); //nn:=delete(name,1,length(vn)+2); end; end; stringgrid1.Cells[2,j+1]:=vn; stringgrid1.Cells[3,j+1]:=nn; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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