AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Höchster Wert aus Registry

Offene Frage von "kaschte"
Ein Thema von kaschte · begonnen am 17. Jun 2007 · letzter Beitrag vom 18. Jun 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 12:56
Hi,

Ich würde aber für den Anfang Bubblesort empfehlen. Ist natürlich um einiges langsamer aber fürn anfang um einiges verständlicher und einfacher... Und wenn du nicht sooo viele Werte hast dann reicht das eigentlich auch aus...

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
kaschte

Registriert seit: 2. Apr 2006
72 Beiträge
 
#12

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 13:03
Zitat von Luckie:
Delphi-Quellcode:
var
  MyIntArray: array of Integer
  i: Integer;
begin
  SetLength(MyIntArray, sl.Count);
  for i := 0 to sl.Count - 1 do
  begin
    MyIntArray[i] := StrToInt(sl.Strings[i]);
  end;
Meine Stringlist heisst reglist, wo kommt jetzt also der Name reglist rein?


@Neutral General

Ok, also Bubblesort versteh ich glaubs, wie kann ich jetzt da es sortiert ist den höchsten Wert auslesen und diesen dann öffnen?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 13:08
Und meine StringList heißt sl.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
kaschte

Registriert seit: 2. Apr 2006
72 Beiträge
 
#14

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 13:22
Ok, jetzt funktionieren beide varianten mit Quicksort und Bubblesort (werde wahrscheinlich Quicksort nehmen da schneller). Wie kann ich jetzt den höchsten Wert aus dem sortierten Array auslesen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 13:30
Zitat:
Wie kann ich jetzt den höchsten Wert aus dem sortierten Array auslesen?
Je nach Sortierungsreihenfolge. Entweder den 1. oder den letzten
Markus Kinzler
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#16

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 13:33
Wie meinst Du das? Wie man auf ein Element des Arrays zugreift, oder wie man den größten Wert im Array ermittelt?

Wie man auf ein Element des Array zugreift weißt Du ja bereits, da Du ja auch schon Daten in das Array geschrieben hast. Also einfach anders herum. Für den zweiten Fall stell Dir einfach vor, das Array wären Uno Karten in Deiner Hand, und Du hast Dir viel Mühe gegeben sie nach dem Wert zu sortieren. Wo würdest Du nun die Karte mit dem höchsten Wert suchen. Wahrscheinlich ganz links oder ganz rechts, oder?

-
arno
  Mit Zitat antworten Zitat
kaschte

Registriert seit: 2. Apr 2006
72 Beiträge
 
#17

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 13:35
Delphi-Quellcode:
procedure Quick_Sort(var A: array of Integer);

 procedure QuickSort(var A: array of Integer; iLo, iHi: Integer);
 var
   Lo, Hi, Mid, T: Integer;
 begin
   Lo := iLo;
   Hi := iHi;
   Mid := A[(Lo + Hi) div 2];
   repeat
     while A[Lo] < Mid do Inc(Lo);
     while A[Hi] > Mid do Dec(Hi);
     if Lo <= Hi then
     begin
       T := A[Lo];
       A[Lo] := A[Hi];
       A[Hi] := T;
       Inc(Lo);
       Dec(Hi);
     end;
   until Lo > Hi;
   if Hi > iLo then QuickSort(A, iLo, Hi);
   if Lo < iHi then QuickSort(A, Lo, iHi);
 end;

begin
 QuickSort(A, Low(A), High(A));
end;
Das ist der Sortierungscode und mit dem hier ruf ich ihn auf. Arrayname ist MyIntArray:

Delphi-Quellcode:
   for I:=Low(MyIntArray) to High(MyIntArray) do
   MyIntArray[I]:=Random(High(Integer));

 Quick_Sort(MyIntArray);
Welche Reihenfolge wird hier gemacht und wie lese ich den Wert jetzt aus?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#18

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 13:41
Hi,

Im Notfall lässt du dir einfach mal Array[0] und Array[High(Array)] anzeigen und dann siehst du ja spätestens wie rum sortiert wurde

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
kaschte

Registriert seit: 2. Apr 2006
72 Beiträge
 
#19

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 13:48
Delphi-Quellcode:
procedure TForm1.Deaktivieren1Click(Sender: TObject);
var regist: TRegistry;
reglist : Tstringlist;
status, i : integer;
  MyIntArray: array of Integer;
   arr: array[0..100] of integer;
begin
  regist:=TRegistry.Create;
  regist.RootKey:=HKEY_CURRENT_USER;
  regist.OpenKey('Software\***\*\*', true);
  reglist := TStringList.Create;
  status := 1;
  regist.GetKeyNames(reglist);
    SetLength(MyIntArray, reglist.Count);
  for i := 0 to reglist.Count - 1 do
  begin
    MyIntArray[i] := StrToInt(reglist.Strings[i]);
  end;
   for I:=Low(MyIntArray) to High(MyIntArray) do
   MyIntArray[I]:=Random(High(Integer));

 Quick_Sort(MyIntArray);

regist.free;
label3.caption := IntToStr(MyIntArray[0]);
Bei diesem Code kommt die Fehlermeldung:
Project *.exe raised exception class EConvertError with message "4226805319' is not a valid integer value'. Process stopped.

4226805319 ist übrigens der höchste Wert neben ihm gibt es allerdings nur noch 0 werds aber noch auf nem anderen PC probieren dort hat es mehrere.

EDIT2: Die Fehlermeldung auf dem anderen PC gab den mittleren Wert als is not a valid iteger value an.
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#20

Re: Höchster Wert aus Registry

  Alt 17. Jun 2007, 14:28
Zitat von Luckie:
Er wird da schon einen Sortieralgorithmus benutzen müssen.
Nö.

Um den höchsten Wert aus einem Array rauszusuchen muss amn es nicht sortieren. Eine Variable mit 0, -1 oder leeren String initialisieren und dann mit allen Werten im Array vergleichen, ist ein Wert höher diesen Wert merken. So kommt man auch ohne sortieren aus.

Also:

Delphi-Quellcode:
maxWert := -1
for i := 0 to obereArraygrenze do begin

  if aArray[i] > maxWert then maxWert := aArray[i]

end;
Ralf Kaiser
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 Uhr.
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