Autor Beitrag
Rage
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Mo 26.09.05 12:49 
Hi Leuts,
ich hatte heute Informatik in der Schule und wir haben bis morgen riesige hausaufgaben aufbekommen, obwohl wir die Syntax die wir benötigen noch garnicht kennen(also selbst beibringen).

So mein Problem ist: Ich habe ein Stringgrig indem soll ich einfach in den Feldern
von 1-650 zufallsstrings einlesen lassen und diese dann später sortieren lassen.
Das problem ist das ich nicht weiß wie ich Zufallsstrings einlesen kann.
ich habs bisher nur geschafft ein bestimmtes zeichen einzulesen.
Ich muss jetzt also in jedes Feld (1-650) ein Zufallstring einlesen der ca. 5 zeichen hat.
die 5 zeichen sollen ganz normale buchstaben sein die auch keinen sinn ergeben müssen.

naja ich hab halt so angefangen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
   for a:=1 to 650 do
   begin
   StringGrid1.Cells[a,1]:=Random?????;
   end;


so un da wo die fragezeichen sind weiß ich schonma net weiter.
kann mir vielleicht jemand helfen?

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.
Grishnak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 221

Windows XP Home
Delphi 7 PE, Delphi 2005 PE
BeitragVerfasst: Mo 26.09.05 12:55 
Die Funtion "Random(26)" erstellt dir eine Zufallszahl zwischen 0 und 25. Dazu addierst du den Wert vom Buchstaben 'A' und wandelst die Summe wieder in einen Buchstaben um. Aus fünf solchen Zufallsbuchstaben - zwischen 'A' und 'Z'! - setzt du dann deinen Zufallsstring zusammen! Da es eine Hausaufgabe ist, werde ich nicht weiter ins Detail gehen!

_________________
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Mo 26.09.05 13:03 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
const
  CHR_FROM = Ord('a');
  CHR_TO = Ord('z');
var
  I: Integer;
  J: Integer;
  Buffer: array[0..4] of Char;
begin

  for I := 1 to 650 do
  begin
    for J := Low(Buffer) to High(Buffer) do
      Buffer[J] := Chr(Random(CHR_TO - CHR_FROM) + CHR_FROM);
    StringGrid1.Cells[I, 1] := Buffer;
  end;

end;

_________________
Ciao, Sprint.
Grishnak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 221

Windows XP Home
Delphi 7 PE, Delphi 2005 PE
BeitragVerfasst: Mo 26.09.05 13:20 
@Sprint: Spielverderber! :x

Außerdem:

ausblenden Delphi-Quelltext
 
14:
{ ... }
      Buffer[J] := Chr(Random(CHR_TO - CHR_FROM + 1) + CHR_FROM);
:wink:

Moderiert von user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt und gewünschte Zeilennummer gesetzt.
Rage Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Mo 26.09.05 14:01 
ja gut das funktioniert jetzt auch, aber ich hab keine ahnung wie ich die einzelnen strings jetzt miteinander vergleichen soll.
ich hab mir überlegt das ich von jedem der 650 StringGrids den ersten Buchstaben auslesen lass und setz die dann in den ascii code um und kann dann die zahlen mit dem Straightselection vergleichen und hab dann schonma ne kleine anordnung.
Das Problem: ich weiß nicht wie ich den ersten buchstaben von nem stringGrid mit ner schleife auslesen kann un weiß auch net wie ich die in den ascii code umsetz.
das is sau dumm das wir so ne hausaufgabe haben und wir noch net ma so sachen besprochen haben ^^
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Mo 26.09.05 14:02 
man kann strings direkt vergleichen

'zazazazaz' > 'ababababab'

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Rage Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Mo 26.09.05 14:56 
oh ja das geht sogar :-) das wusste ich net.
aber naja bei 650 strings da muss man allerdings ein Sortierverfahren anwenden, wir sollen
es mit dem Straightselection machen, ich hab einfach ma versucht das auf die strings abzustimmen sah dann so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
for i:=1 to 650 do
begin
  Merke:=StringGrid1.Cells[i,1];
  j:=i;
  while (j>1) and (StringGrid1.Cells[j-1]>Merke) do
  begin
    StringGrid1.Cells[j]:=StringGrid1.Cells[j-1];
    Dec(i);
  end;
  StringGrid1.Cells[j]:=Merke;



aber da kommt dann der Fehler "nicht genügend wirkliche parameter in Zeile 5.
mit einzelnen strings vergleichen hab ichs schon hinbekommen. aber mit den 650 eher weniger ^^

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Mo 26.09.05 15:07 
Cells erwartet doch 2 werte wie in zeile 3

also vielleicht einfach .Cells[j-1,1]

selbe in zeile 7 und 10

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Rage Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Mo 26.09.05 15:51 
ahhh :-(

du hast recht, jetzt geht alles