Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi variable felder, string aufspalten,.... (https://www.delphipraxis.net/87477-variable-felder-string-aufspalten.html)

webtiger 1. Mär 2007 07:57


variable felder, string aufspalten,....
 
hi
ich arbeite zur zeit an einem infoprojekt und könnte etwas hilfe gebrauchen^^
also....ich hab eine globale variable z vom typ integer. die wird auf formular 1 eingegeben. z muss zwischen 10 und 100 liegen und ungerade sein. soweit funktioniert alles wunderbar.
jetzt möchte ich das jede zahl von 1 bis z in einem extra feld ausgegeben wird (bin mir noch nicht ganz sicher ob ich besser ein label oder statictext nehmen sollte?). mein problem ist ich weiß nicht wie ich das am besten mache. die zahlen sollten dabei in ziffern aufgespalten werden. also das z.b. bei 13 nicht ein feld mit 13 drin dasteht sondern ein feld mit 1 und ein feld mit 3.

wär total nett wenn ihr mir sagen könntet wie ich das am besten auf die reihe kriege. ich hab delphi 7 falls das wichtig sein sollte.

danke im voraus


-web

guidobrose 1. Mär 2007 08:03

Re: variable felder, string aufspalten,....
 
Du könntest die Zahl in einen String umwandeln (brauchts du wahrscheinlich sowieso, um sie als Text ausgeben zu können) und den String dann mittels der Funktion "copy" in seine Teile zerlegen. Geht vielleicht auch einfacher, aber nur mal als Vorschlag.

Edit:

Du kannst auch direkt auf ein Zeichen eines Strings zugreifen, in der Art:
Delphi-Quellcode:
MeinStringMitDerZahlDrin:=IntToStr(MeineZahl);
Label1.Caption:=MeinStringMitDerZahlDrin[1];
Das entspräche dann dem ersten Zeichen in dem String.


Guido

Tormentor32 1. Mär 2007 08:09

Re: variable felder, string aufspalten,....
 
kleines Schnippsel, was du dir dann zurechtbiegen könntest

Delphi-Quellcode:
  s := inttostr(zahl); // s ist eine Stringvariable
  for i := 1 to length(s) do
    label1.caption := label1.caption + s[i]+' ';
Macht nichts anderes, als die einzelnen Ziffern einer Zahl in ein Label zu schreiben...

Edit: komische Formatierung...

webtiger 1. Mär 2007 08:19

Re: variable felder, string aufspalten,....
 
also....das hab ich grad ausprobiert...danke für den hinweis :)
aber mein prob ist noch....wie krieg ich das prog dazu mir alle zahlen von 1 bis z auszugeben? bis jetzt krieg ich immer nur z raus....bin noch immer für jede hilfe dankbar^^ (sry, blutiger anfänger.....)


[edit] btw....aber eigentlich ist mein problem nicht die zahlen in ein label zu kriegen sondern in einzelne. ich glaub in einem label kann ich die danach nicht gut weiterverwenden. ich habe auch überlegt ein array zu erstellen. geht das überhaupt mit einer variable? [/edit]
-web

mkinzler 1. Mär 2007 08:24

Re: variable felder, string aufspalten,....
 
Delphi-Quellcode:
if TryStrToInt( s, z) then
    for i := 1 to z do
       s2 := s2 + IntToStr(i) + ' ';
[Edit: in einzelnen Labels:]
Delphi-Quellcode:
   with TLabel.Create( Form) do
   begin
       Parent = Form;
       left := i*20;
       Top := 100;
       Name := 'Label'+IntToStr(i);
       Caption := IntToStr(i);
   end;
[/Edit]

marabu 1. Mär 2007 08:35

Re: variable felder, string aufspalten,....
 
Hallo,

da bei z = 99 nicht gut alle Zahlen in einer Zeile angezeigt werden können, zielt alles auf eine zweidimensionale Darstellung hin. Dabei könnte die Komponente TStringGrid (Palettenseite "Zusätzlich") ganz hilfreich sein.

Grüße vom marabu

mkinzler 1. Mär 2007 08:41

Re: variable felder, string aufspalten,....
 
Hallo Achim,
du hast natürlich recht, wir das das auch bewußt, der Code sollte ihm aber zum Verständnis reichen.

xZise 1. Mär 2007 11:03

Re: variable felder, string aufspalten,....
 
Also möchtest du jede Zahl in ein Label schreiben (von 1 bis z) oder nur in ein Label (1, 2, 3 ... z)?
Für das 1.:
Zuerst brauchst du die Labels... Am besten in ein Array, dann sind die einfacher zu erreichen:
Delphi-Quellcode:
var
  lbls : array [0..99] of TLabel;
Nun musst du sie beim Anzeigen der Form erstellen:
Delphi-Quellcode:
for i := 0 to 99 do
begin
  lbls[i] := TLabel.Create(<Besitzter>); // Das einzelne Label erstellen (Der Besitzter des Labels, ist normalerweise das Formular, und steht in der Varible "self")
  with lbls[i] do begin
    Parent := self;
    Top := <Y>; //Z.B.: i * 10 + 8; Der Y-Abstand => Dynamisch!
    Left := <X>; //Z.B.: 8; Der X-Abstand => Statisch!
    Visble := false;
    Caption := IntToStr(i + 1);
  end;
end;
Diese musst du nun passend Anzeigen:
Delphi-Quellcode:
for i := 0 to z do // Alle Labels anzeigen, bis "z"
begin
  lbls[i].Visible := true;
end;
for i := z + 1 to 99 do // Den Rest ausblenden
begin
  lbls[i].Visible := false;
end;

webtiger 4. Mär 2007 16:07

Re: variable felder, string aufspalten,....
 
danke für eure hilfe. leider kann ich die guten tipps erst am di in der schule testen wenn ich info hab. aber werdet sicher noch ne menge delphi-verzweiflung von mir zu hören kriegen^^

@xZise: ich möchte jede zahl in ein Label schreiben. und eigentlich sollten zweistellige zahlen noch aufgeteilt werden so das am ende in jedem label wirklich nur eine ziffer steht.


-web

xZise 4. Mär 2007 16:19

Re: variable felder, string aufspalten,....
 
Zitat:

Zitat von webtiger
@xZise: ich möchte jede zahl in ein Label schreiben. und eigentlich sollten zweistellige zahlen noch aufgeteilt werden so das am ende in jedem label wirklich nur eine ziffer steht.

Du weist schon wie viel arbeit das sein wird? ~170 Labels ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 Uhr.
Seite 1 von 2  1 2      

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