| 
| Autor | Beitrag |  
| sevenscrime Hält's aus hier
 Beiträge: 8
 
 
 
 
 | 
Verfasst: Sa 25.04.09 16:13 
 
Hallo , liebe Community!
 Wahrscheinlich habt ihr shcon viele solcher Threads beantwortet , aber ich bekomm es einfach nicht hin es an meinem Programm zu berichtigen.Was noch zu sagen ist ich bin ein Anfänger    		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 
 | procedure TForm1.Button2Click(Sender: TObject);var
 zahl1,zahl2,zahl3,zahl4,zahl5,zahl6,zahl7,zahl8,zahl9,zahl10:integer;
 
 begin
 zahl1:=17 ;
 zahl2:=98  ;
 zahl3:=55 ;
 zahl4:=32 ;
 zahl5:=9  ;
 zahl6:=69 ;
 zahl7:=46 ;
 zahl8:=72 ;
 zahl9:=13 ;
 zahl10:=88;
 zahl1:=stringgrid1.cells[0,0]:integer
 |  Eigentlich wollte ich eine zufällig generierte Zahl in ein Stringgrid einbinden , um dann damit weiterzuarbeite , um letzenendlich Bubblesort hinzubekommen.Nur hat das mit dem Random nicht geklappt , weshalb ich mir Zahlen vorgebe und so tue , als ob sie zufällig sind -.- .
  Darum wäre ich euch sehr dankbar , wenn ihr mir beides lösen könntet.
  Vielen Dank.
 MFG |  |  |  
| Dude566 
          Beiträge: 1592
 Erhaltene Danke: 79
 
 W8, W7 (Chrome, FF, IE)
 Delphi XE2 Pro, Eclipse Juno, VS2012
 
 | 
Verfasst: Sa 25.04.09 16:22 
 
Du weist der Zelle im StringGrid garkeinen Wert zu, sondern der zahl1 den Wert in der Zelle(0/0).
 Zufallszahlen:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 
 | procedure TForm1.RandomClick(Sender: TObject);var
 zahl : integer;
 begin
 randomize;     zahl := random(10)+1;     Edit1.Text := IntToStr(zahl);
 end;
 |  Bubblesort
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 
 | varzufall : array [1..100] of integer;
 for i := 1 to 100 do
 for j := 1 to 99 do
 if zufall[j] > zufall[j+1] then begin
 hilf := zufall[j];
 zufall[j] := zufall[j+1];
 zufall[j+1] := hilf;
 end;
 for i := 1 to 100 do ListBox1.Items.Add(IntToStr(zufall[i]));
 | _________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
 |  |  |  
| sevenscrime  Hält's aus hier
 Beiträge: 8
 
 
 
 
 | 
Verfasst: Sa 25.04.09 18:02 
 
Und wie kann ich eine zufällig bestimmte Zahl einer Zelle im Stringgrid zuweisen?Oder gleich mehrere?
 MFG
 |  |  |  
| Xabitire 
          Beiträge: 114
 
 Win Xp, Win Vista
 D6 PE, D7 PE
 
 | 
Verfasst: Sa 25.04.09 18:33 
 
Hallo und    im Forum.
 Geh einfach mit Hilfe von for-Schleifen, jede Zelle des Stringgrids durch und schreibe eine Zufallszahl rein. 
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 
 | var x, y: Integer;begin
 Randomize;
 
 for x := 0 to StringGrid1.ColCount - 1 do
 for y := 0 to StringGrid1.RowCount - 1 do
 StringGrid1.Cells[x,y] := IntToStr(Random(10) + 1;
 |  Wenn du allerdings einer Zelle mehrere Zahlen zuweisen willst oder nicht immer zwischen String und Integer/Double/etc. hin und her konvertieren willst solltest du ein mehrdimensionales Array benutzen, dessen Inhalt du dann jeweils, wenn benötigt, im Stringrid ausgibst. Das erspart dem Computer dann auch unnötige Rechenarbeit    Mit freundlichen Grüßen
 Blackbird8690 |  |  |  
| sevenscrime  Hält's aus hier
 Beiträge: 8
 
 
 
 
 | 
Verfasst: Sa 25.04.09 20:03 
 
Danke euch , nur kommt jetztfolgende Fehlermeldung ( hat die SuFu benutzt    ):
 Nicht genügend wirkliche Parameter. 
 1. was ist das?
 2. wie kann ich es verbessern?
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 
 | procedure TForm1.Button2Click(Sender: TObject);var i,j,c:integer;
 begin
 for i:=1 to 10-1 do
 begin
 for j:=10 downto i do
 begin
 if stringgrid1.cells[j]<stringgrid1.Cells[j-1] then
 begin
 c:=stringgrid1.cells[j-1];
 stringgrid1.cells[j-1]:=stringgrid1.cells[j];
 stringgrid1.Cells[j]:=c;
 end;
 end;
 end;
 |  MFG, danke. |  |  |  
| GTA-Place 
          
  Beiträge: 5248
 Erhaltene Danke: 2
 
 WIN XP, IE 7, FF 2.0
 Delphi 7, Lazarus
 
 | 
Verfasst: Sa 25.04.09 20:30 
 
Nun, eine Zelle hat doch X- und Y-Koordinaten, oder nicht?    		                       Also zum Beispiel 
 									| 1:
 | StringGrid1.Cells[I, J] := C;					 |  Außerdem solltest du keine festen Werte für die For-Schleife nehmen, sondern die Anzahl der Zellen._________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
 |  |  |  
| sevenscrime  Hält's aus hier
 Beiträge: 8
 
 
 
 
 | 
Verfasst: Sa 25.04.09 20:58 
 
Vielen Dank , klappt jetzt soweit.Delphi zeigt keinen Fehler mehr an , nur , wenn ich jetzt das Project starte und mir erstmal mein zufälligen zahlen hole ( indem ich auf den button1 klicke) passiert alles wie es soll , aber , wenn ich auf button 2 klicke kommt eine fehler meldung : "ist kein gültiger integer wert.
 Hier der aktuelle Quellcode:
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 
 | procedure TForm1.Button1Click(Sender: TObject);var x, y: Integer;
 begin
 Randomize;
 
 for x := 0 to StringGrid1.ColCount - 1 do
 
 for y := 0 to StringGrid1.RowCount - 1 do
 StringGrid1.Cells[x,y] := IntToStr(Random(100) + 1);
 
 end;
 
 
 
 procedure TForm1.Button2Click(Sender: TObject);
 var i,j,c:integer;
 begin
 for i:=1 to 10-1 do
 begin
 for j:=10 downto i do
 begin
 if stringgrid1.cells[j,0]<stringgrid1.Cells[j-1,0] then
 begin
 
 stringgrid1.cells[j-1,0]:=inttostr(c);
 stringgrid1.cells[j-1,0]:=stringgrid1.cells[j,0];
 c:=strtoint(stringgrid1.cells[j,0]);
 end;
 end;
 end;
 
 
 end;
 |  Hat jemand ne Idee?
 Ich vermute ,dass es an dem c und dem stringgrid liegt , weiß aber nichts genaueres.
 MFG |  |  |  
| Martok 
          Beiträge: 3661
 Erhaltene Danke: 604
 
 Win 8.1, Win 10 x64
 Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
 
 | 
Verfasst: Sa 25.04.09 22:37 
 
Nur geraten, wäre aber logisch:
 	  |  GTA-Place hat folgendes geschrieben  : |  	  | Außerdem solltest du keine festen Werte für die For-Schleife nehmen, sondern die Anzahl der Zellen. | 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
 |  |  |  
| Xabitire 
          Beiträge: 114
 
 Win Xp, Win Vista
 D6 PE, D7 PE
 
 | 
Verfasst: Sa 25.04.09 22:51 
 |  |  |  
| sevenscrime  Hält's aus hier
 Beiträge: 8
 
 
 
 
 | 
Verfasst: Sa 25.04.09 23:38 
 
So hab das genannte übernommen , nur ist jetzt mein Problem , dass ich , wenn ich das Project starten will nur den grauen Hintergrund des Fensters zu sehen bekomme.Formular und Quellcode ist da, das hab ich nachgeguckt.
Was nun?
 
 MFG
 |  |  |  
| FinnO 
          Beiträge: 1331
 Erhaltene Danke: 123
 
 Mac OSX, Arch
 TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
 
 | 
Verfasst: So 26.04.09 10:21 
 
schauen ob Stringgrid.Visible im Objektinspektor True ist. |  |  |  
| sevenscrime  Hält's aus hier
 Beiträge: 8
 
 
 
 
 | 
Verfasst: So 26.04.09 11:17 
 
Tform1 war nicht auf visible true. Hab das nun geändert , aber es ist immer noch nichts zu sehen ( man kann auch auf nichts klicken -.-).
 MFG
 |  |  |  
| j.klugmann Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: So 26.04.09 11:20 
 
	  |  sevenscrime hat folgendes geschrieben  : |  	  | Tform1 war nicht auf visible true. Hab das nun geändert , aber es ist immer noch nichts zu sehen ( man kann auch auf nichts klicken -.-). 
 MFG
 | 
 Es ist gar nichts zusehen? Dann überprüfe mal , ob du sonst irgendwo im Code Form1 auf Visible := false gesetzt hast- |  |  |  
| Jakob_Ullmann 
          Beiträge: 1747
 Erhaltene Danke: 15
 
 Win 7, *Ubuntu GNU/Linux*
 *Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
 
 | 
Verfasst: So 26.04.09 11:53 
 
Oder poste am besten mal den Code. |  |  |  
| sevenscrime  Hält's aus hier
 Beiträge: 8
 
 
 
 
 | 
Verfasst: So 26.04.09 12:00 
 
Nee , hab ich nicht.
 Hier der komplette Code nochmal:
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 
 | unit bubblesort;
 interface
 
 uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, Grids;
 
 type
 TForm1 = class(TForm)
 Edit1: TEdit;
 Button1: TButton;
 Button2: TButton;
 Button3: TButton;
 StringGrid1: TStringGrid;
 procedure Button3Click(Sender: TObject);
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 private
 
 public
 
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 {$R *.DFM}
 
 procedure TForm1.Button3Click(Sender: TObject);
 begin
 close;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 var x, y: Integer;
 begin
 Randomize;
 
 for x := 0 to StringGrid1.ColCount - 1 do
 
 for y := 0 to StringGrid1.RowCount - 1 do
 StringGrid1.Cells[x,y] := IntToStr(Random(100) + 1);
 
 end;
 
 
 
 procedure TForm1.Button2Click(Sender: TObject);
 var i,j,c:integer;
 begin
 for i:=1 to 10-1 do
 begin
 for j:=10 downto i do
 begin
 if stringgrid1.cells[j,0]<stringgrid1.Cells[j-1,0] then
 begin
 strtoint:=stringgrid1.cells[j-1,0];
 stringgrid1.cells[j-1,0]:=inttostr(c);
 stringgrid1.cells[j-1,0]:=stringgrid1.cells[j,0];
 c:=strtoint(stringgrid1.cells[j,0]);
 end;
 end;
 end;
 
 
 end;
 
 end.
 |  Normalerweise müsste er jetzt ja , wenn ich  die zufälligen zahlen erstellt habe (per maus-klick) dann müsste ich ja per mausklick auf den entsprechenden button sehen ( mehr oder weniger) , wie die Zahlen vertauscht werden . Das kann ich aber nicht . Was muss ich also machen??
 PS:Fragt mich nicht woher ich weiß , dass es nicht so ist irgendwie hab ich mal dies und das gemacht und dann konnte ich es sehen , aber es klappt immer noch nicht , das Starten des Programmes.
 MFG , danke. |  |  |  
| Jakob_Ullmann 
          Beiträge: 1747
 Erhaltene Danke: 15
 
 Win 7, *Ubuntu GNU/Linux*
 *Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
 
 | 
Verfasst: So 26.04.09 12:02 
 
Bitte bearbeite den Thread nochmal und mache aus dem [delphi] ein [delphi]. Danke!
 edit: Mist, zu spät.
 |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Mo 27.04.09 06:23 
 
Die fehlen offensichtlich die alleruntersten Grundlagen, deshalb einmal der Hinweis auf diesen sehr guten Crashkurs:
crashkurs.christian-stelzmann.de und die neue Version speziell ab Turbo Delphi:
www.christian-stelzm...shkurs_reloaded.html Ein weiteres gutes Online-Buch:
de.wikibooks.org/wik...grammierkurs:_Delphi Dann zu dem geposteten Quelltext: 	  |  sevenscrime hat folgendes geschrieben  : |  	  | 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 
 |          strtoint:=stringgrid1.cells[j-1,0];stringgrid1.cells[j-1,0]:=inttostr(c);
 stringgrid1.cells[j-1,0]:=stringgrid1.cells[j,0];
 c:=strtoint(stringgrid1.cells[j,0]);
 |  | 
 In der ersten Zeile benutzt du StrToInt. Dies ist eine Funktion, die dir einen Wert zurückgibt. Also so wie IntToStr, das du in der nächsten Zeile benutzt.
 In der zweiten Zeile benutzt du jetzt c, allerdings hast du dieser Variablen noch gar keinen Wert zugewiesen...
 In der vierten Zeile weist du jetzt c einen Wert zu, danach wird c allerdings in diesem Schleifendurchlauf gar nicht mehr verwendet.
 Dann noch zu deiner if-Abfrage: 		                       Delphi-Quelltext 
 									| 1:
 | if stringgrid1.cells[j,0]<stringgrid1.Cells[j-1,0] then					 |  Du vergleichst so zwei Strings, aber nicht die Zahlenwerte darin.
 Zwei Werte austauschen geht prinzipiell so, der erste Wert wird zwischengespeichert in einer Variablen, dann bekommt der den neuen Wert und am Ende der zweite Wert den zwischengespeicherten: 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 
 | vartemp: String;
 begin
 Temp := StringGrid1.Cells[j-1, 0];
 StringGrid1.Cells[j-1, 0] := StringGrid1.Cells[j, 0];
 StringGrid1.cells[j, 0] := Temp;
 |  |  |  |  
| thepaine91 
          Beiträge: 763
 Erhaltene Danke: 27
 
 Win XP, Windows 7, (Linux)
 D6, D2010, C#, PHP, Java(Android), HTML/Js
 
 | 
Verfasst: Mo 27.04.09 08:52 
 
Hab auch mal eine Frage zu deiner if Abfrage und zwar warum machst du folgendes
 		                       Delphi-Quelltext 
 bezogen auf [ 10 - 1 ] warum rechnest du in einer for schleife mit 2 Konstanten?
 Kostet eig. nur unnötige Rechenleistung. D.h. gleich 9 schreiben.    		                       Delphi-Quelltext 
 									| 1:
 |  strtoint:=StringGrid1.cells[1,1];					 |  Diese Zeile ist für mich unverständlich. 
 Und davon abgesehn kann ich mir nicht vorstellen das du da keine Fehlermeldung bekommst? Oo |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Mo 27.04.09 09:32 
 |  |  |  
| thepaine91 
          Beiträge: 763
 Erhaltene Danke: 27
 
 Win XP, Windows 7, (Linux)
 D6, D2010, C#, PHP, Java(Android), HTML/Js
 
 | 
Verfasst: Mo 27.04.09 09:41 
 
Zum 1. wieder was dazu gelernt. Danke dafür  @jeanicke =)
Zum 2. Ich sehe das etwas anders denn ist er offensichtlich ein Anfänger und da denke ich sollte man das erwähnen.
 Weis ja nicht was er sich dabei gedacht hat. Meine Vermutung wäre das er denkt damit wandelt er im Programm alle
 string werte im strgrid dauerhaft in Integer um. War vil. aber auch einfach ein Flüchtigkeitsfehler.
 Und er sagte ja auch das es nicht Funktioniert also Weise ich ihn netter weise darauf hin.
 |  |  |  |