Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StringGrid mit Daten füllen und farblich Darstellen (https://www.delphipraxis.net/128425-stringgrid-mit-daten-fuellen-und-farblich-darstellen.html)

Chemiker 1. Mär 2009 17:18

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Hallo Jens,

am Anfang der Aufzeichnung ClearBuffer.

Bis bald Chemiker

Jens Hartmann 1. Mär 2009 17:52

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Wie meinst Du das mit ClearBuffer.

Meinst du meine Glob. Var. oder den InputBuffer der Schnittstelle.

Ich hatte jetzt einfach die Var. Buffer leergemacht, wenn ein falscher Anfangsdatensatz da ist, somit hatte ich auch erschlagen, das wenn ich an der Hardware einen RESET durchführen, dieser Müll erst gar nicht geschrieben wird.

Delphi-Quellcode:
{Daten von COM-Schnittestelle lesen}

procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: string);
begin
  Buffer := Str;
  if Pos(':', Buffer) = 1 then
  Bufferverarbeitung
end;

Chemiker 1. Mär 2009 19:47

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Hallo Jens,

ClearBuffer vom TComPort um den Input buffer zu löschen.

Bis bald Chemiker

Jens Hartmann 3. Apr 2009 19:33

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Hallo,

habe mal noch ne Frage zum Thema, ich habe mal noch eine weitere Zentrale programmiert, klappt auch mittlerweiel sehr gut diese Auswertung. Mich würden allerdings mal ein paar Zeichen interessieren.


'Ereignis : 9 B: 1/ 0 '#$A'Bereich unscharf 03.APR.09 19:51:16'#$A'Wohnhaus Jens Hartmann '#$A'Makro 2 '#$A#$A#$1B'P'#1#$1B'R'


Das ist mein aktueller Datensatz. 40 Zeichen pro Zeile, also war die Auswertung eigendlich total einfach, aber was für eine Bedeutung haben die letzten '#$A' müsste ja der Zeilenumbruch sein, aber was Bedeutet der Rest.

'#$1B'P'#1#$1B'R'

Gruß Jens.


PS: Gibt es dafür irgendwie ne Tabelle oder so. Kann mir ja noch öffters passieren.

Chemiker 4. Apr 2009 13:17

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Hallo Jens,

die Zeichen könnte irgendwelche Befehle sein, die von der Zentrale abgesetzt werden. Vielleicht steht etwas in der Dokumentation von Zentrale über die Bedeutung dieser Zeichen.

Bis bald Chemiker

Jens Hartmann 4. Apr 2009 16:03

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Leider nicht,

ich dachte, es gäbe irgendwie so ne Tabelle, wo die Übersetzung zu sehen wäre. Weil '#$A' ist ja z.B. #13 und #13 ist ja ENTER also Zeilenvorschub, oder war es #10. Naja aufjedenfall irgendwie so.

Gruß Jens

jaenicke 4. Apr 2009 16:11

Re: StringGrid mit Daten füllen und farblich Darstellen
 
1B wäre ja das Escapezeichen. Was die da bedeuten kann man so natürlich nicht sehen.
http://www.torsten-horn.de/techdocs/ascii.htm

Jens Hartmann 4. Apr 2009 17:01

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Danke schön,

diese Tabelle wird mir bestimmt bei meiner weiteren Arbeit weiterhelfen.

Gruß Jens

Jens Hartmann 4. Apr 2009 21:51

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Hab die Tabelle jetzt mal durchgesehen, wenn ich das richtig sehe, müssten die Zeichen folgende Bedeutung haben

#$ Soll heißen, da kommt ein ASCII Zeichen
A Soll heißen Zeilenvorschub
D Soll heißen CR (ich vermute die Taste Ctrl) Allerdings versteh ich den Sinn nicht, was die macht.
1B Soll heißen Escape, was auch irgendwie keinen Sinn ergibt.

Das bedeutet aber für mich auch, da diese immer am Ende eines Datensatzes sind, könnte ich mir das ja zum nutzen machen, und damit mein Datensatzende feststellen. Mein Problem, liegt aber jetzt dabei, das meine Komponente dies nicht akzeptiert.

Gebe ich als Satzende einen String ein, z.B. 'Ereignis' als STOPSTRING (Eigenschaft von TCOMPacket), so wird dieser ausgewertet und es klappt. Leider muss ich bei dieser Methode, das Wort Ereignis, meinem Datensatz allerdings wieder zufügen, weil der STOP´STRING nicht mehr übergeben wird. Von Vorteil daher wäre, das wirkliche Satzende zu verwenden.

Trage ich allerdings jetzt folgende Varianten als STOPSTRING ein, wird die Funktion nicht ausgeführt.

VAR1: #$D#$A#$A#$1B (so kann ich die Daten im Debugmodus lesen)
VAR2: DAA1B (wären ja eigendlcih die Zeichen) (ASCII-Format)

Allerdings, ist mir klar warum beide nicht gehen, aber wie bringe ich den dann meine Komponente dazu, diese Werte zu lesen, wie Zeilenvorschub.

Mein Problem besteht ja darin, diese Funktionen als String zu schreiben.

Es muss doch eine Möglichkeit geben, wie z.B. #$ als Vorzeichen von A D und 1B um da zu realisieren.

Vieleicht kann mir ja mal jemand sagen wie.

Gruß Jens

jaenicke 4. Apr 2009 21:54

Re: StringGrid mit Daten füllen und farblich Darstellen
 
#13#10, also hexadezimal #$D#$A, ist unter Windows der Zeilenumbruch. Um genau zu sein ein Relikt aus Zeiten der Schreibmaschine / Fernschreiber. Einmal Wagenrücklauf (des Wagens der Schreibmaschine) und einmal Zeilenvorschub (des Papiers um eine Zeile).

Jens Hartmann 4. Apr 2009 21:56

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Ja, das habe ich auch gedacht,

Sorry aber das war die vergessene Variante 3. Auch damit kann die Kompo scheinbar nichts anfangen.


Gruß Jens

jaenicke 4. Apr 2009 22:00

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Wie hast du es denn geschrieben? Als String?
Delphi-Quellcode:
StopString := '#$D#$A#$A#$1B';
Das wäre auch Quatsch, weil dann ja nicht diese 4 Zeichen mit den entsprechenden Hexadezimalwerten sondern die Zeichen #, $, D, usw. in dem String stehen...
So sollte es dann eigentlich gehen:
Delphi-Quellcode:
StopString := #$D#$A#$A#$1B;

Jens Hartmann 4. Apr 2009 22:12

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Ja,

genau so habe ich es gemacht, (siehe Anhang).

Es ist aber tatsächlich so, das jede Art von String erkannt wird, und die funktion gegeben ist. Das ist absolut kein Problem. Ich habe das mittlerweile, (Du müsstest mein Projekt ja mittlerweile kenne, du hast ja schließlich den Hauptanstoß für die Lösung gegeben) mit einigen Zentrale gemacht, teilweise wird mir auch ein schöner StopString geliefert, da ist das dann kein Problem, aber hier ist das halt doof, weil ich keinen gleichen Stop habe, außer die ASCII-Zeichen.

Also, habe ich bislang halt den START des jeweiligen Datensatzes verwendet, was aber halt nicht so schön ist.

Gruß Jens

Jens Hartmann 4. Apr 2009 22:47

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Sorry,

hier auch der Anhang

Gruß Jens

Jens Hartmann 5. Apr 2009 12:53

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Hallo nochmal,

nutzt den eventuell jemand die Komponente oder hat jemand schon mal sowas in der Art benötigt. Vieleicht muss man ja irgendein Sonderzeichen oder so angeben, damit die Zeichen für Zeilenvorschub und so erkannt werden. :gruebel:

Gruß Jens

Chemiker 5. Apr 2009 14:58

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Hallo Jens,

welche Delphi-Version hast Du im Einsatz?

Bis bald Chemiker

Jens Hartmann 5. Apr 2009 15:06

Re: StringGrid mit Daten füllen und farblich Darstellen
 
CodeGear Rad Studio Delphi 2007 Professional

Gruß Jens

Chemiker 5. Apr 2009 15:36

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Hallo Jens,

mal so versuchen: ^M^J^J^A'B '.

Bis bald Chemiker

Jens Hartmann 5. Apr 2009 18:30

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Danke Chemiker,

werde ich gleich sofort testen.

Vieleicht bis später, oder so.

Gruß Jens

Jens Hartmann 6. Apr 2009 16:25

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Hallo Chemiker,

leider funktioniert das genau so wenig. Ich könnte es ja auch so lassen, wie es momentan ist, aber es gefällt mir halt nicht so richtig, und die Abfrage auf das Ende des String´s, klingt ja auch im allgemeinen logisch bei STOPSTRING.

Das Problem ist halt, ich habe es bis jetzt bei jedem System hinbekommen, da am Ende immer was identisches steht. Leider hier nicht. Naja, wenn keiner mehr ne Idee hat, werde ich es erstmal so lassen. Vieleicht hat ja irgendwann jemand mal das Problem, oder ich wechsel mal irgendwann die Komponente.

[EDIT] Ein weiteres Problem, was daraus entsteht, ist natürlich auch das, das ein Ereignis immer im Speicher steht, und erst angezeigt wird, wenn das nächste kommt. Somit steht in meiner Software nie das aktuellste Ereignis.[EDIT END]

Gruß Jens

Jens Hartmann 6. Apr 2009 17:45

Re: StringGrid mit Daten füllen und farblich Darstellen
 
Yes, we can...

Ich habe es hinbekommen. Ganz kurz wie ich es gelößt habe.

Ich habe als STARTSTRING jetzt 'Ereignis' gesetzt, und der Kompo gesagt. INCLUDESTRING := TRUE.
Diese Eigenschaft realisiert, das der START oder STOP String mit geschrieben wird.

Dann ist mir eben aufgefallen, das bei dieser Zentrale der Datensatz immer '169' Zeichen lang ist, und die letzten Zeichen die ja meine Problem waren, nicht benötigt werden. Daraus folgt, Somit konnte ich die Eigenschaft SIZE von meiner Kompo auf 165 setzen,so das jeder Datensatz auch sofort geschrieben wird, und nicht erst auf den nächsten gewartet werden muss.

So, ich möchte mich trotzdem nochmal bei allen bedanken und sage bis später mal.

Gruß Jens


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.
Seite 3 von 3     123   

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