AGB  ·  Datenschutz  ·  Impressum  







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

Arrays auf ungleichheit Prüfen

Ein Thema von Starworld1000 · begonnen am 14. Jul 2017 · letzter Beitrag vom 15. Jul 2017
Antwort Antwort
Starworld1000

Registriert seit: 19. Mär 2007
49 Beiträge
 
#1

AW: Arrays auf ungleichheit Prüfen

  Alt 14. Jul 2017, 13:39
zum veranschaulichen habe ich jetzt mal ein paar Codeschnipsel beigefügt.

Code:
...

Str2.Text:=(Copy(htmlcode,48,999));

...

SetLength(Stoer1, Str2.Count );

                for i := 0 to High(Stoer1) do
                        begin
                        Label6.Caption:=inttostr(i);
                        s:=Str2[i];
                        p1:=pos(':',s);            //Teilbereich1 Störzeit
                        SubStr := Copy(s,1, p1+6);
                        delete(s, 1, p1+6);

                        p1:=pos('/',s);            //Teilbereich2 Störbereich
                        SubStr2 := Copy(s,1, p1-1);
                        delete(s, 1, p1);

                        p1:=pos('/',s);            //Teilbereich3 Störmeldung
                        SubStr3 := Copy(s,1, p1-1);
                        delete(s, 1, p1);
         
         Stoer1[i, 0]:=Datetostr(now);
                        Stoer1[i, 1]:=Substr;
                        Stoer1[i, 2]:=Substr2;
                        Stoer1[i, 3]:=Substr3;
         end;

...

setlength(Stoer2,length(Stoer1));
for i:=0 to High(Stoer1) do
        begin
        If (Stoer2[i, 1] <> Stoer1[i,1]) or (Stoer2[i, 4] <> Stoer1[i,4]) then
                begin
                 Stoer2[i, 0]:=Stoer1[i, 0];
                 Stoer2[i, 1]:=Stoer1[i, 1];
                 Stoer2[i, 2]:=Stoer1[i, 2];
                 Stoer2[i, 3]:=Stoer1[i, 3];
...

                 end;
          end;
...
Richtig Stoer1 ist immer nur temporär solange eine Störung da ist oder nicht

Ich bin mir halt nicht sicher ob das überhaupt der richtige weg ist oder nicht ?
Ich muss halt mit dem String in STR2 arbeiten.

Der sieht wie folgt aus:
13:39:47/005/049/Störung Modul 02B ist ausgefallen
Ist die Störung behoben sollte sie so ungefähr in StoerDB stehen:
13.07.2017 | 13:39:47 | 005 | 049 | Störung Modul 02B ist ausgefallen | 13.07.2017 | 16:09:21

Nur irgendwie komme ich nicht mehr weiter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#2

AW: Arrays auf ungleichheit Prüfen

  Alt 14. Jul 2017, 14:09
Pssst, in den ganz neuen Delphis gibt es jetzt String-Like-Array-Operatoren.

Also nicht nur arr := arr1 + arr2; , arr := arr1 + [xyz]; oder arr := arr1 - arr2;
sondern auch Operatoren zum Vergleichen oder filtern, so ala
Delphi-Quellcode:
arr := arr1 * arr2;
arr := arr1 = arr2;
arr := arr1 <> arr2;
arr := arr1 > arr2;
arr := arr1 in arr2;
arr := xyz in arr2;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#3

AW: Arrays auf ungleichheit Prüfen

  Alt 14. Jul 2017, 14:12
Zitat:
Pssst, in den ganz neuen Delphis gibt es jetzt String-Like-Array-Operatoren.
Der Vollständigkeit halber: wie sind denn die Namen
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Arrays auf ungleichheit Prüfen

  Alt 14. Jul 2017, 14:13
Zitat:
Pssst, in den ganz neuen Delphis gibt es jetzt String-Like-Array-Operatoren.
Der Vollständigkeit halber: wie sind denn die Namen


Also nicht nur arr := arr1 + arr2; , arr := arr1 + [xyz]; oder arr := arr1 - arr2;
sondern auch Operatoren zum Vergleichen oder filtern, so ala
Delphi-Quellcode:
arr := arr1 * arr2;
arr := arr1 = arr2;
arr := arr1 <> arr2;
arr := arr1 > arr2;
arr := arr1 in arr2;
arr := xyz in arr2;
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (14. Jul 2017 um 14:15 Uhr)
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#5

AW: Arrays auf ungleichheit Prüfen

  Alt 14. Jul 2017, 14:14
Ich glaube ich habe mich verlesen. Ich dachte hier eher an eine Funktion, der man Parameter übergibt und die Boolean zurückgibt.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Arrays auf ungleichheit Prüfen

  Alt 14. Jul 2017, 14:15
Ich glaube ich habe mich verlesen. Ich dachte hier eher an eine Funktion, der man Parameter übergibt und die Boolean zurückgibt.
So ist es im Grunde auch, nur dass die Funktion als Operator implementiert wurde. Ist halt einfacher/schöner zu verwenden.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#7

AW: Arrays auf ungleichheit Prüfen

  Alt 14. Jul 2017, 14:42
Bin ich wirklich so doof?

Delphi-Quellcode:
var
 aA: TArray<string>;
 aB: TArray<string>;
 b: Boolean;
begin
 aA := TArray<string>.Create('1', '2', '3');
 aB := TArray<string>.Create('1', 'B', '3', '4');

 b := '1in aB;
end;
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#8

AW: Arrays auf ungleichheit Prüfen

  Alt 15. Jul 2017, 10:29
Mein Ansatz wäre im Prinzip ähnlich dem von Stahli gerade vorgeschlagenem, das mit getrennten Dictionarys zu lösen... und ganz wichtig: eine eigene CompareFunktion, weil man so einfach selbst bestimmt was wie verglichen werden soll... das ist zu 99% viel passender wie ein "zwangsweise 100% binary egual" ArrayVergleich per Operator durch den Compiler

- also alles zunächst wie gewollt im erste "LiveDictionary" zufügen bzw. aktualisieren
- dann z.B. im Timer alles(per "for each") aus dem "LiveDictionary" im ersten "LiveDictionary" auf Vorhandensein prüfen und wenn ja aktualisieren bzw. sonst zufügen und passendes auslösen
- usw...

Das mit dummen Arrays zu machen ist uneffektiv. Dictionarys mit dummen Records wären da sicher schonmal etwas besser und eleganter. Wenn es "schön" werden soll, das das Ganze mit/in eigener Storage-Klasse kapseln und dort auch die zugehörigen internen Comparer mit unterbringen... Mr. Rabe würde gleich noch ein ZugriffsInterface und ein SpeicherInterface designen, dann wird es sogar nebenbei universell erweiterbar/austauschbar.

Auch bei QuickAndDirty würde ich bei uns mindestens ne Kombi aus einer eineindeutigen "globalen/gesamt" TObjectList(oder "=" DB-Tabelle) UND separaten Dictionarys[HASH->"ol"INDEX](oder "=" DB-Zuordnungstabellen) für deine verschiedenen (Zeit)Kategorien und/oder States aller Störungen realsieren und das in einer eindeutig benannten Klasse(hier z.B. "Störungen") kapseln.

Dies entspricht der Tatsache, das dein Problem bei uns unter dem allgemeinem Sichwort "JobList" liefe und per "DesignRule" nach diesem allgemeingültigen internem Grundkonzept gelöst werden würde.

Geändert von mensch72 (15. Jul 2017 um 10:32 Uhr)
  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 04:21 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