Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Leere StringGrid-Zellen (https://www.delphipraxis.net/134373-leere-stringgrid-zellen.html)

maddi 1990 20. Mai 2009 20:57


Leere StringGrid-Zellen
 
Hallo!
Und zwar habe ich ein Problem beim Erstellen eines Programmes! In diesem Programm soll man ein Text eingeben können, der dann in eine StringGrid-Komponente geschrieben wird (also jeder einzelne Buchstabe in eine StrinGridZelle). Danach soll nach Klick auf einen Button diese einzelnen Buchstaben in den StringGrid-Zellen spaltenweise aus der StringGrid-Komponente ausgelesen werden und somit verschlüsselt ausgegeben werden, z.B.:

D I E S E
N A C H R I
C H T I S
T S T R E
N G G E H
E I M ! ! !

--> verschlüsselt: DNCTNEIAH GIECTS MSH TG!ERIRE! ISEH!

meine StringGrid-Komponente hat 6 Spalten und 6 Zeilen

Quelltext:
Delphi-Quellcode:
procedure Tform1.ButtonOK Click(Sender:Tobject);
var s:string; i:integer;
begin
s:=EingabeEdit.Text+’************************************’;
  for i:=1 to 6 do
   begin
     SG.Cells[i,1]:=s[i];
     SG.Cells[i,2]:=s[i+6];
     SG.Cells[i,3]:=s[i+12];
     SG.Cells[i,4]:=s[i+18];
     SG.Cells[i,5]:=s[i+24];
     SG.Cells[i,6]:=s[i+30];
  end;

end;

procedure Tform1.ButtonVerschluesseln Click(Sender:Tobject);
var s:string; i:integer; textneu:string;
begin
textneu:=’’;

for i:=1 to 6 do
  begin
    textneu:=textneu+SG.Cells{i,1];
    textneu:=textneu+SG.Cells{i,2];
    textneu:=textneu+SG.Cells{i,3];
    textneu:=textneu+SG.Cells{i,4];
    textneu:=textneu+SG.Cells{i,5];
    textneu:=textneu+SG.Cells{i,6];
  end;

AusgabeEdit.Text:=textneu;

end;


Das Programm funktioniert zwar, aber ich suche nach einer besseren Möglichkeit, wie ich das Problem lösen kann, wenn der Text weniger als 36 Zeichen hat und leere StringGrid-Zellen vorhanden sind! Wenn der Text kürzer als 36 Zeichen ist, dann soll in diesen leeren StringGrid-Zellen ein * stehen! bisher habe ich einfach an den eingegebenen Text * angehängt! Jedoch suche ich nach einer besseren Lösung! Mit einer if-Anweisung oder so!
Hat vielleicht jemand eine Idee und kann mir helfen???

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

quendolineDD 20. Mai 2009 21:04

Re: Leere StringGrid-Zellen
 
Mit length() kannst du die Länge der Zeichen ermitteln und somit ab dem letzten Zeichen fortlaufend bis zum Schluss des Stringgrids dieses mit * befüllen.
Und bitte Editier deinen Beitrag und Schreibe den Quellcode in den DELPHI-Tags.

maddi 1990 22. Mai 2009 15:28

Re: Leere StringGrid-Zellen
 
Danke erstmal für den Tip :)
Ääähm...aber wie genau mach ich das denn? :D ;)

mkinzler 22. Mai 2009 15:30

Re: Leere StringGrid-Zellen
 
Beser length(Trim())

Zitat:

Ääähm...aber wie genau mach ich das denn? Very Happy Wink
Code markieren und Button Delphi-Code anklicken

Klaus01 22. Mai 2009 15:31

Re: Leere StringGrid-Zellen
 
Hallo,

vielleicht so:

Delphi-Quellcode:
while length(DeinText) < 36 do
  DeinText:=DeinText+'*';
Grüße
Klaus

maddi 1990 26. Mai 2009 16:21

Re: Leere StringGrid-Zellen
 
Vielen Dank :) Es hat geklappt :)

Hab aber nochmal 2 Fragen zu meinem Programm :D

1. Ich habe einen Neu-Button hinzugefügt und der soll halt die Eintragungen in den StrigGrid-Zellen löschen! Wie mach ich das denn???

und

2. Man gibt ja einen Text ein und soll ihn mit dem OK-Button bestätigen, damit der Text in die StrigGrid-Komponente eingetragen wird. Und nach einem Klick auf ein Button "Verschlüsseln" soll der verschlüsselte Text ausgegeben werden. Wenn man nun aber vergessen hat auf OK zu klicken und auf Verschlüsseln klickt, kann ja kein Text ausgegeben werden, da nix in der StringGrid-Komponente steht! Nun möchte ich gerne, dass eine Meldung kommt (mit ShowMessage), wenn man auf Verschlüsseln klickt, aber nix in der String-Grid-Komponente steht (weil man ja nicht auf OK geklickt hat)! Hat jemand eine Idee, wie ich das machen könnte?

p80286 26. Mai 2009 18:10

Re: Leere StringGrid-Zellen
 
zu 1)
Delphi-Quellcode:
for i:=0 to stringgrid.rowcount-1 do
  stringgrid.rows[i]:='';
zu 2)
arbeite doch mit butVerschlüssel.enabled.
Wenn OK gedrückt wurde dann setzt Du butVerschlüssel.enabled:=true
und nach dem Verschlüssel butVerschlüssel.enabled:=false.

Das sollte auffällig genug sein.
Ansonsten arbeite mit einer boolschen Variablen istOKgedrückt.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 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