AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Stringlist nach fehlenden Werten durchsuchen?!?
Thema durchsuchen
Ansicht
Themen-Optionen

Stringlist nach fehlenden Werten durchsuchen?!?

Ein Thema von DiscMix · begonnen am 26. Okt 2004 · letzter Beitrag vom 26. Okt 2004
Antwort Antwort
Benutzerbild von DiscMix
DiscMix

Registriert seit: 9. Jan 2004
Ort: Hamburg
52 Beiträge
 
#1

Stringlist nach fehlenden Werten durchsuchen?!?

  Alt 26. Okt 2004, 15:41
Hallo,

habt Ihr ein Denkanstoss für mich?

Eine Stringliste hat viele Werte:

100
101
102
103
106
107
110
usw.

Nun möchte ich prüfen, wo und welche Lücken existieren?
Also: Nummer 104 und 105 sind nicht vorhanden, neu anlegen und liste wieder durchgehen.

Wer kann mir helfen?
Gruss
Marco
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Stringlist nach fehlenden Werten durchsuchen?!?

  Alt 26. Okt 2004, 15:42
Erstelle dir ein Array, in dem die Werte, die die Liste enthalten soll, gespeichert sind, und lösche diese Werte aus dem Array, wenn sie gefunden werden. Die Werte, die nicht in der Liste enthalten sind, sind am Ende in dem Array.
  Mit Zitat antworten Zitat
Benutzerbild von DiscMix
DiscMix

Registriert seit: 9. Jan 2004
Ort: Hamburg
52 Beiträge
 
#3

Re: Stringlist nach fehlenden Werten durchsuchen?!?

  Alt 26. Okt 2004, 15:49
Danke,

aber ich weiss beim erstellen der Stringliste nicht welche Werte und welcher Bereich eingelesen wird.

Das kann mal sein, dass der Bereich von 100 bis 200 geht und mit 100 anfängt, das kann aber auch bei Tausend beginnen und bis Zehntausend laufen. usw. usw.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Stringlist nach fehlenden Werten durchsuchen?!?

  Alt 26. Okt 2004, 16:06
Delphi-Quellcode:
// minimalen und maximalen Wert feststellen
minWert := MaxInt;
maxWert := MinInt;
for i := 0 to StringListe.count-1 do
begin
   wert := StrToInt(StringListe[i]);
   if wert > maxWert then maxWert := wert
   else if wert < minWert then minWert := Wert;
end;

// prüfen, welchen Werte dazwischen fehlen
for i := minWert+1 to maxWert-1 do
begin
   if StringListe.IndexOf(IntToStr(i)) = -1 then
   begin
      // Wert fehlt
      StringListe.Add(IntToStr(i));
   end;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DiscMix
DiscMix

Registriert seit: 9. Jan 2004
Ort: Hamburg
52 Beiträge
 
#5

Re: Stringlist nach fehlenden Werten durchsuchen?!?

  Alt 26. Okt 2004, 16:09
danke,

das werde ich gleich mal ausprobieren.
  Mit Zitat antworten Zitat
Benutzerbild von Dano
Dano

Registriert seit: 12. Aug 2004
49 Beiträge
 
#6

Re: Stringlist nach fehlenden Werten durchsuchen?!?

  Alt 26. Okt 2004, 21:20
hi,

wenn du nur eine liste vervollständigen willst, dann wäre der einfachste und schnellste weg einmal den minimalwert und dann den maximalwert festzustellen, so wie es der erte teil von shmia's funktion zeigt
Delphi-Quellcode:
// minimalen und maximalen Wert feststellen
minWert := MaxInt;
maxWert := MinInt;
for i := 0 to StringListe.count-1 do
begin
   wert := StrToInt(StringListe[i]);
   if wert > maxWert then maxWert := wert
   else if wert < minWert then minWert := Wert;
end;
und dann einfach eine neue liste mit werten zwischen min und max erstellen... dann sparste dir die vielen vergleiche
denn:if StringListe.IndexOf(IntToStr(i)) = -1 then IndexOf vergleicht die werte in der liste solange bis er einen findet, oder wenn er keinen findet gibt er -1 zurück

also einmal die ganze liste durchsuchen wäre genauso wie einmal die ganze liste neu zu schreiben....
nur beim duchsuchen wiederhot er die suche bei 100 einträgen 100mal

also 1mal schreiben oder 100mal suchen...?
Delphi-Quellcode:
// minimalen und maximalen Wert feststellen
minWert := MaxInt;
maxWert := MinInt;
for i := 0 to StringListe.count-1 do
begin
   wert := StrToInt(StringListe[i]);
   if wert > maxWert then maxWert := wert
   else if wert < minWert then minWert := Wert;
end;

// einfach alle werte in dem bereich anlegen.....
for i := minWert+1 to maxWert-1 do NeuStringListe.Add(IntToStr(i));
ich hoffe ich habe dein problem richtig verstanden..
wenn du natürlich wissen willst welche werte fehlen, dann hilft meine version nicht

ansonst kannst du die liste vorher sortieren und dann einfach überprüfen ob die zahlen aufeinander folgen, wenn nicht mußt du eine einfügen
das spart auch ein haufen sucherrei

mfg Dano
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:22 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