AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Daten von versch. Quellen zusammenfassen mit Dataset?
Thema durchsuchen
Ansicht
Themen-Optionen

Daten von versch. Quellen zusammenfassen mit Dataset?

Ein Thema von FatPap · begonnen am 5. Jun 2014 · letzter Beitrag vom 6. Jun 2014
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Daten von versch. Quellen zusammenfassen mit Dataset?

  Alt 6. Jun 2014, 09:18
Ich hatte gerade ein Gespräch mit dem Chef.

Wir stellten fest dass es ungünstig ist immer von verschiedenen Quellen abzufragen. Deshalb wird auf dem Server auch eine lokale Datenbank (sqlite) zur Anwendung kommen in der sämtliche Daten der verschiedenen Anlagen eingetragen werden.
Der Kern-Anwendung sollte es völlig egal sein, wo die Daten genau herkommen. Die muss nur wissen, wie sie an die Daten kommt. Das erledigt man über die Definition von Repositories. Das jeweilige Repository weiß, wie man an die Daten kommt und die Anwendung fragt einfach das Repository. Schon wird es (aus Sicht der Anwendung) egal, wo die Daten liegen und wie die konkrete Abfrage zu bewerkstelligen ist.
Delphi-Quellcode:
// Generisches Repository
type
  IRepository<T,TID> = interface
    function Find( AID : TID ) : T;
    function FindAll : TList<T>;
  end;

  IPersonRepository = interface( IRepository<TPerson,integer> )
    function FindByName( const AName : string ) : TList<TPerson>;
  end;
Eine Konzentration von Daten in einer Datenbank, nur aufgrund von Befindlichkeiten des Programmierers, ist mE völlig unsinnig und kann uU mehr Probleme schaffen.
Zum Übertragen verwende ich die INDY_10 Komponente TIdTCPServer und TIdTCPClient.
Also stellt sich für mich jetzt die Frage was nehmen für "RecordOderSonstwas" (bzw. warum die Daten nicht einfach im Statement lassen und direkt übertragen) und in welcher Form übertragen?

Wie ich einen Record mit dem TCPServer übertrage hab ich schon herausgefunden:
Delphi-Quellcode:
procedure TFrmStart.TCP_SERVERExecute(AContext: TIdContext);
var Buf : TidBytes;
begin
  Buf := RawToBytes(einRecord, Sizeof(einRecord));
  AContext.Connection.IOHandler.Write(Buf);
end;
Solange du in dem Record keine string Typen verwendest wird das auch so funktionieren - sonst aber nicht.
Bei einem String befindet sich im Record lediglich eine Referenz auf den String und nicht der String selber.

Such mal nach Serialisierung (z.B. nach JSON oder XML) und übergib das an den Client. Der kann sich daraus dann wieder eine Instanz/Record zusammenbauen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 6. Jun 2014 um 09:20 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 07:37 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