AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

sortieren von Adressdaten - ohne DB

Ein Thema von BMI · begonnen am 31. Dez 2014 · letzter Beitrag vom 1. Jan 2015
 
Benutzerbild von BMI
BMI

Registriert seit: 16. Jul 2010
58 Beiträge
 
Delphi 2 Desktop
 
#1

sortieren von Adressdaten - ohne DB

  Alt 31. Dez 2014, 21:08
Hi,

vermutlich wird hier erst wieder einer antworten, wenn der Rausch ausgeschlafen ist
aber egal.

Ich verwende Delphi 7 Std.


aalso: Ich möchte Adressdaten sortieren:
und zwar hab ich bisher folgende Listen verwendet - wobei ich mir vorstellen könnte, daß Profis das in Records umsetzen würden - welche ich als Anfänger aber noch nicht so gut umsetzen kann:

Nachname (String, bis 60 Zeichen)
Geburtsdatum+Zeit (Integer oder double, hatte bisher integer*10000)
Faktor (integer)

Bsp:
Meier-Müller
23.12.1954 13:34
897

Czervinski
04.02.1978 09:12
1204


Eigentlich bestimmt ne ganz triviale Aufgabe - die einfach nach Spalten (Name, GeburtsdatZeit oder Faktor sortieren zu können) per klick.

Aber ich hab's nicht geschafft, weil alle das nur mit Integer-Arrays - oftmals sogar nur als eindimensionale umgesetzt haben.
Und ich hab für alle 3 bisher Stringlisten angelegt, weil ich die leichter in einer Datei speichern und laden konnte. Und dann bei bedarf strtoint() konvertiert.
Das ist aber sicherlich auch nicht die schnelle Art.

Dabei hab ich aber noch die Strings in der ersten Spalte, die ja auch noch verglichen werden müßten. Die Integer wären ja einfacher mit dem unten beschriebenen Code umsetzbar.


Delphi-Quellcode:

funtion StringCompare (StringA, StringB: String ): bool;
var i: integer;
    S, t: String;
begin
    for i = 1 do length(StringA) begin
      if ord(StringA[i]) < ord(StringB[i]) then result := 1 else result := 0;
    end
end;

procedure ShellSort(var aSort: array of integer);
var
  iI, iJ, iK,
  iSize: integer;
  wTemp: integer;
begin
  iSize := High(aSort);
  iK := iSize shr 1;
  while iK > 0 do
  begin
    for iI := 0 to iSize - iK do
    begin
      iJ := iI;
      while (iJ >= 0) and (aSort[iJ] > aSort[iJ + iK]) do
      begin
        wTemp := aSort[iJ];
        aSort[iJ] := aSort[iJ + iK];
        aSort[iJ + iK] := wTemp;
        if iJ > iK then
          Dec(iJ, iK)
        else
          iJ := 0
      end;
    end;
    iK := iK shr 1;
  end;
end;
Hat da vielleicht noch jemand was, was man leichter umsetzen/implementieren kann?
Herzlichen Dank.
Das Projekt ist für mich privat - nicht direkt kommerziell - d.h. es erleichtert mir einfach persönlich nur den Umgang mit den Daten, wird aber nicht verkauft o.ä.
eine Signatur? - in 2022? - WOZU ?!!!

Geändert von BMI (31. Dez 2014 um 21:26 Uhr)
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:54 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 by Thomas Breitkreuz