Discussion:
Wie kann ich MEHRERE RTF-Felder in eine Datei speichern.
(zu alt für eine Antwort)
Joachim Zaich
2010-08-23 18:06:24 UTC
Permalink
Hallo,

ich habe mehrere RTF-Felder in einem Rahmen und möchte die Daten in eine
Datei speichern.
Wenn ich .TextRTF auslese und speichere kann ich es nicht mehr richtig
zurückholen, da in den Daten CR/LF Informationen sind.
Gänsefüßchen halfen nicht.
Mein Versuch vbCrLF zu suchen und durch %% zu ersetzen und zu
wiederherstellen hat zu unerwarteten Ergebnisse geführt. z.B wurde aus 10:00
dann %%%%%% 10:00 %%%%%%.
Ich möchte keine 20 oder 30 Dateien anlegen, sondern nur eine einzige für
alle Felder. Eine Datei für ein Feld ist ein Klacks, aber ich wäre lieber
für eine einzige Datei. Google war leider auch nicht mein Freund.

Grüßle

Joachim Zaich
G.Wietzorek
2010-08-24 05:54:36 UTC
Permalink
Post by Joachim Zaich
Hallo,
ich habe mehrere RTF-Felder in einem Rahmen und möchte die Daten in eine
Datei speichern.
Wenn ich .TextRTF auslese und speichere kann ich es nicht mehr richtig
zurückholen, da in den Daten CR/LF Informationen sind.
Datei im falschen Modus geöffnet. Öffne die Datei im binären Modus zum
schreiben. Schreibe zunächst mal die Anzahl der 'Datensätze', dann je
Textfeld zunächst die Länge und dann den Inhalt in die Datei. So hast Du
dann auch keine Probleme die Daten im binären Modus wieder auszulesen.

Gruß

Gert

P.S.
Diese Newsgroup gibt es nur noch übergangsweise. Derzeit findest Du die
Teilnehmer dieser NG in de.comp.lang.misc.

Im Augenblick findet die Einrichtung einer VB Gruppe in der de
Hierarchie statt. Falls Du daran in Zukunft Interesse hast und
teilnehmen willst, wäre es hilfreich, wenn Du Dich an der diesbezüglich
notwendigen Abstimmung beteiligen würdest. Den Wahlschein mit
Erläuterungen findest Du u.a. in de.admin.news.announce im Thread "1.
RfD: de.comp.lang.VBclassic (Neueinrichtung".
--
"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie
entstanden sind."
Albert Einstein
Joachim Zaich
2010-08-24 06:26:55 UTC
Permalink
Vielen Dank Gert!

Es bleibt noch ein Problem dass ich nicht lösen kann - vielleicht habe ich
auch nur zu lange gesucht, da übersieht man dann doch einiges.
Wie sage ich: Lese 123 Zeichen
Mein Problem ist, wie gebe ich die Zahl der gewünschten Bytes an und mit
welchem Befehl.

Grüßle

Joachim
Post by G.Wietzorek
Post by Joachim Zaich
Hallo,
ich habe mehrere RTF-Felder in einem Rahmen und möchte die Daten in eine
Datei speichern.
Wenn ich .TextRTF auslese und speichere kann ich es nicht mehr richtig
zurückholen, da in den Daten CR/LF Informationen sind.
Datei im falschen Modus geöffnet. Öffne die Datei im binären Modus zum
schreiben. Schreibe zunächst mal die Anzahl der 'Datensätze', dann je
Textfeld zunächst die Länge und dann den Inhalt in die Datei. So hast Du
dann auch keine Probleme die Daten im binären Modus wieder auszulesen.
Gruß
Gert
P.S.
Diese Newsgroup gibt es nur noch übergangsweise. Derzeit findest Du die
Teilnehmer dieser NG in de.comp.lang.misc.
Im Augenblick findet die Einrichtung einer VB Gruppe in der de
Hierarchie statt. Falls Du daran in Zukunft Interesse hast und
teilnehmen willst, wäre es hilfreich, wenn Du Dich an der diesbezüglich
notwendigen Abstimmung beteiligen würdest. Den Wahlschein mit
Erläuterungen findest Du u.a. in de.admin.news.announce im Thread "1.
RfD: de.comp.lang.VBclassic (Neueinrichtung".
--
"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie
entstanden sind."
Albert Einstein
G.Wietzorek
2010-08-24 16:38:26 UTC
Permalink
Post by Joachim Zaich
Vielen Dank Gert!
Es bleibt noch ein Problem dass ich nicht lösen kann - vielleicht habe ich
auch nur zu lange gesucht, da übersieht man dann doch einiges.
Wie sage ich: Lese 123 Zeichen
Mein Problem ist, wie gebe ich die Zahl der gewünschten Bytes an und mit
welchem Befehl.
Hier mal ein einfaches Beispiel:

Option Explicit

Private Sub SchreibeTextArray(sfilename As String, stext() As String)
Dim lLaenge As Long
Dim lAnzahl As Long
Dim x As Long
Dim fnum As Long
fnum = FreeFile()
Open sfilename For Binary Access Write As #fnum
lAnzahl = UBound(stext) + 1
Put #fnum, , lAnzahl
For x = 0 To UBound(stext)
lLaenge = Len(stext(x))
Put #fnum, , lLaenge
Put #fnum, , stext(x)
Next
Close #fnum
End Sub
Private Sub LeseTextArray(sfilename As String, stext() As String)
Dim lLaenge As Long
Dim lAnzahl As Long
Dim x As Long
Dim fnum As Long
fnum = FreeFile()
Open sfilename For Binary Access Read As #fnum
Get #fnum, , lAnzahl
ReDim stext(0 To lAnzahl - 1)
For x = LBound(stext) To UBound(stext)
Get #fnum, , lLaenge
stext(x) = Space(lLaenge)
Get #fnum, , stext(x)
Next
Close #fnum
End Sub

Private Sub Command1_Click()
Dim test() As String
Dim x&
ReDim test(4)
test(0) = "abc"
test(1) = "def"
test(2) = "noch ein Text"
test(3) = "und noch ein anderer"
test(4) = "mal was anderes"
SchreibeTextArray "c:\test.dat", test()
'Inhalt des Arrays erstmal zurücksetzen
ReDim test(0)
'und aus Datei einlesen
LeseTextArray "c:\test.dat", test()
For x = 0 To UBound(test)
Debug.Print test(x)
Next
End Sub
--
"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie
entstanden sind."
Albert Einstein
Joachim Zaich
2010-08-25 06:25:44 UTC
Permalink
Danke Gert für das Beispiel, damit ist mein Problem gelöst.

Grüßle

Joachim
Post by G.Wietzorek
Post by Joachim Zaich
Vielen Dank Gert!
Es bleibt noch ein Problem dass ich nicht lösen kann - vielleicht habe ich
auch nur zu lange gesucht, da übersieht man dann doch einiges.
Wie sage ich: Lese 123 Zeichen
Mein Problem ist, wie gebe ich die Zahl der gewünschten Bytes an und mit
welchem Befehl.
Option Explicit
Private Sub SchreibeTextArray(sfilename As String, stext() As String)
Dim lLaenge As Long
Dim lAnzahl As Long
Dim x As Long
Dim fnum As Long
fnum = FreeFile()
Open sfilename For Binary Access Write As #fnum
lAnzahl = UBound(stext) + 1
Put #fnum, , lAnzahl
For x = 0 To UBound(stext)
lLaenge = Len(stext(x))
Put #fnum, , lLaenge
Put #fnum, , stext(x)
Next
Close #fnum
End Sub
Private Sub LeseTextArray(sfilename As String, stext() As String)
Dim lLaenge As Long
Dim lAnzahl As Long
Dim x As Long
Dim fnum As Long
fnum = FreeFile()
Open sfilename For Binary Access Read As #fnum
Get #fnum, , lAnzahl
ReDim stext(0 To lAnzahl - 1)
For x = LBound(stext) To UBound(stext)
Get #fnum, , lLaenge
stext(x) = Space(lLaenge)
Get #fnum, , stext(x)
Next
Close #fnum
End Sub
Private Sub Command1_Click()
Dim test() As String
Dim x&
ReDim test(4)
test(0) = "abc"
test(1) = "def"
test(2) = "noch ein Text"
test(3) = "und noch ein anderer"
test(4) = "mal was anderes"
SchreibeTextArray "c:\test.dat", test()
'Inhalt des Arrays erstmal zurücksetzen
ReDim test(0)
'und aus Datei einlesen
LeseTextArray "c:\test.dat", test()
For x = 0 To UBound(test)
Debug.Print test(x)
Next
End Sub
--
"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie
entstanden sind."
Albert Einstein
Thorsten Albers
2010-08-25 09:34:54 UTC
Permalink
Post by Joachim Zaich
Danke Gert für das Beispiel, damit ist mein Problem gelöst.
Hast Du auch das gelesen, was Gert über die Schließung dieser
Diskussionsgruppe geschrieben hat? Das ist sehr wichtig!
--
Thorsten Albers

albers (a) uni-freiburg.de
Joachim Zaich
2010-08-26 09:04:35 UTC
Permalink
Ich habe es gelesen, aber nicht verstanden.
Ich habe keine Ahnung, wie ich zu dem Abstimmungsbogen komme.

Ich bin sehr dafür, das es weitergeht, da ich bei VB 6 bleiben werde.
In meinem Hauptprogramm stecken 10 Jahre Entwicklungsarbeit, ich kann mir
nicht vorstellen, wie ich das in VB-Net umsetzen soll. Allein das ich bei
Dim nicht mehr sagen kann: "Dim Name(-1 to 8)" macht mir sorgen. (0=
Refrain, 1-10 die einzelnen Verse und -1 ist alle. Die Obergrenze wurde
schon ein mal erweitert problemlos um die Bridge (Ein Liederübergang)
erweitert und könnte noch einmal wachsen).

Grüßle

Joachim
Post by Thorsten Albers
Post by Joachim Zaich
Danke Gert für das Beispiel, damit ist mein Problem gelöst.
Hast Du auch das gelesen, was Gert über die Schließung dieser
Diskussionsgruppe geschrieben hat? Das ist sehr wichtig!
--
Thorsten Albers
albers (a) uni-freiburg.de
Schmidt
2010-08-26 12:10:03 UTC
Permalink
Post by Joachim Zaich
Ich habe es gelesen, aber nicht verstanden.
Ich habe keine Ahnung, wie ich zu dem
Abstimmungsbogen komme.
Der Abstimmungsbogen (der Wahlschein) steckt
innerhalb des von von unseren Proponenten
(Thorsten Albers und Ingo Moch) verfassten CfV
(Call for Vote), der dann wiederum vom ehrenamtlich
tätigen Betreuer des "Abstimmungs- und Zählverfahrens"
(Thomas Hochstein) nochmal gegengelesen, leicht angepasst
und dann neben anderen Gruppen auch in die Gruppe:

de.admin.news.announce

(oder in Kurzform auch 'dana') gepostet wurde.

Ein direktes Veröffentlichen des CfV (bzw. des darin
enthaltenen Wahlscheins) hier in dieser alten und
demnächst auslaufenden NewsGruppe verbieten
die Wahl-Regeln.

Also Du musst eigentlich nur die oben genannte Gruppe in
Deinem NewsReader aufstöbern und abonnieren, und dort
dann unter den wenigen Postings (dana ist eine Low-Traffic-
Gruppe) unseren CfV finden namens:
"1. CfV: de.comp.lang.[basic.]vbclassic (Einrichtung)"

10 Minuten Zeit nehmen, diesen CfV durchlesen - und dann
*nur* den Wahlschein in eine neue, stinknormale E-Mail einfügen
(also nicht als Newsgruppen-Reply abschicken) -
dann im einkopierten Wahlschein die entsprechenden
Positionen ausfüllen (Realname, Ja/Nein-Felder usw. -
aber das erklärt dann auch der Wahlschein-Text selbst...).

Was man vor dem Abschicken der E-Mail dann vielleicht
nochmal checken sollte ist die Zieladresse an die das
Ganze dann rausgeht...
Selbige wird im CfV erst ziemlich spät gelistet (unter
Abstimmungsmodalitäten) - also einfach darauf achten,
dass Du da die richtige erwischt hast (also die
*Abstimmadresse* und *nicht* etwa die vom "VoteTaker").

Die E-Mail-Betreffzeile ist egal - wichtig ist nur noch,
dass Du diese Mail nicht von einem "Fake-Mail-Account"
verschickst, da auf Deinen eingeschickten Wahlschein
automatisiert ein Bestätigungs-Reply versendet wird.
Wenn das Script, welches diese Bestätigungsmail
versenden will, damit keinen Erfolg hat, wird Deine
Stimme nicht gezählt, also auch an der Stelle aufpassen.

Weiss nicht, wann von Thorsten u. Ingo nochmal ein
einfacher verständliches Pointer-Posting kommt - eigentlich
ist ein solches in Arbeit - und Zeit ist auch noch ein
wenig, wir sind ja noch in der ersten Runde des CfV -
da kommt auch nochmal ein Aufruf zur zweiten (und
dann letzten) CfV-Runde - aber spätestens dann "gilts"... :-)

Olaf
Thorsten Albers
2010-08-26 15:28:00 UTC
Permalink
Post by Joachim Zaich
Ich habe es gelesen, aber nicht verstanden.
Ich habe keine Ahnung, wie ich zu dem Abstimmungsbogen komme.
Am leichtesten wird es für Dich sein, wenn Du ihn Dir aus dem
Google-Groups-Archiv holst:
<http://groups.google.de/group/de.admin.news.announce/msg/15457db7a618d468?h
l=de>
(Link in einer Zeile!)

Text zwischen
"=-=-=-=-=-=-=-=- Alles vor dieser Zeile bitte loeschen"
und
"=-=-=-=-=-=-=-=- Alles nach dieser Zeile bitte loeschen"
ausschneiden, in E-Mail packen, ausfüllen (nur "JA", "NEIN", "ENTHALTUNG",
keine Felder leer lassen!), als Betreff z.B. "WAHLSCHEIN fuer
de.comp.lang.[basic.]vbclassic (Einrichtung)" einsetzen, und >>mit gültiger
Absender-E-Mail-Adresse<< abschicken an:
dclv-***@gvv.th-h.de

In den nächsten Tagen posten wir hier einen Wahlaufruf, der eine kurze
Übersicht über die Vorgehensweise und die Stimm-Varianten gibt.
Post by Joachim Zaich
Ich bin sehr dafür, das es weitergeht, da ich bei VB 6 bleiben werde.
In meinem Hauptprogramm stecken 10 Jahre Entwicklungsarbeit, ich kann mir
nicht vorstellen, wie ich das in VB-Net umsetzen soll.
Sehr gut!

Hoffentlich sehen wir uns dann demnächst wieder in de.comp.lang.vbclassic
oder de.comp.lang.basic.vbclassic!

Bis dahin kannst Du auch
de.comp.lang.misc
und
de.comp.os.ms-windows.programmer
nutzen. Sollte keine VB.classic-Gruppe in de.* zustande kommen, kannst in
Zukunft Du in einer dieser beiden NGs erfahren, wenn wir eine andere Lösung
gefunden haben sollten.
--
Thorsten Albers

albers (a) uni-freiburg.de
Ingo Moch
2010-08-26 21:32:02 UTC
Permalink
Hallo Joachim,
Post by Joachim Zaich
Ich habe es gelesen, aber nicht verstanden.
Ich habe keine Ahnung, wie ich zu dem Abstimmungsbogen
komme.
Vorab:
Wenn etwas an folgendem nicht klappt, bitte melden. Das
Selbstverwatungs-Verfahren ist fuer jemanden, der bisher
"nur" schon bestehende Gruppen einfach benutzt hat etwas
hakelig. Wir koennen aber nicht wissen wo es hakt, wenn
es niemand anspricht.

Vorab2:
Sobald dein Wunsch in der Abstimmmail offensichtlich ist
und Du per Realname mit gueltiger eMail-Adresse abgestimmt
hast, wird deine Stimme in der Regel gezaehlt. Wenn Du
also erstmal grundsaetzlich weisst, was Du fuer eine
Gruppe moechtest, so kannst Du auch "testen". Du bekommst
eine Bestaetigungsmail, wie deine Stimme gezaehlt wurde.
Wenn etwas nicht stimmen sollte, wird sich der Wahlleiter
entweder mit einer Rueckfrage oder mit eine Stimmablehnung
bei dir per Mail melden. Gefahr beim "testen" ist nur,
dass Du zwar eine gueltige Stimmabgabe vollzogen hast,
diese aber ggf. gar nicht das ausdrueckt, was Du moechtest.

---- Erklaerungsversuch -----------------------------------

Wenn Du auf folgenden Link klicks, sollte sich eigentlich
der offizielle Wahlaufruf oeffnen:

<news:CfV-1-de.comp.lang.vbclassic-20100818-***@dana.de>

Nun im Menue des sich dadurch geoeffneten Outlook Express-
Nachrichtenfensters auf "Nachricht" und dann auf
"Absender antworten" klicken (= per eMail antworten)
(Anmerkung: Die Empfänger-eMail-Adresse ist schon korrekt
auf den Wahl-Account eingestellt). Ggf. jetzt noch die
von dir gewueschte Absende-Adresse waehlen. Wichtig ist
hier auch, dass dein echter Vor- und Zuname genannt ist.

Die ersten 2/3 des Textes beschrieben warum eine eine
VB-Gruppe in de.* Sinn macht (vergleichbar mit dem
umherreisen von Politikern im "Wahlkampf"). Da Du aber
vermutlich weisst, was eine VB-Gruppe bringt, kannst Du
diesen Teil erstmal ignorieren.

Du scollst also zu dem Abschnitt "Abstimmungsmodalitäten:"
im unteren Drittel. Jetzt dreimal tief ein- und wieder
ausatmen und sich von dem Gedanken befreien, dass es
kompliziert ist. SCNR

Nun dieses Kapitel lesen (den mittlere Absatz ggf. erstmal
ueberspringen) --> nach dem lesen solltest Du wissen welche
Werte grundsaetzlich zwischen den eckigen Klammern "[ ]"
eingetragen werden _duerfen_. (leerbleiben sollte keines!)

Das darauf folgende Kapitel erklaert, dass zwei alternative
Namen zur Wahl stehen und gibt Hinweise, wie man seinen
Wunschnamen in der Wahl ausdruecken kann.
"de.comp.lang.basic.vbclassic" ist fuer den Fall, dass Du
denkst, dass noch andere Basic-Dialekte neben VB.classic
passen koennen (z. B. VB.net) und es auch realistisch ist,
dass das "passiert". "de.comp.lang.vbclassic" ist z. B.
fuer den Fall, dass Du VB.net eher als dotnet-Sprache
(neben z. B. C#) denn als Basic-Dialekt siehst. Hier
ueberlege dir, was Du als sinnvoller betrachtest. Erst
wenn Du dich auf eine der beiden Varianten festgelegt
hast, kann es zum abstimmen gehen ...

Da Du ja obige beiden Kapitel gelesen hast, solltest Du
jetzt folgenden Zeile sehen:

=-=- Alles vor dieser Zeile bitte loeschen =-=-

Genau das "Alles vor dieser Zeile bitte loeschen" kannst
Du jetzt tun (das ist keine Pflicht, hilft aber dem
Wahlleiter bei der Auswertung). Nun gehst Du zu den
Abstimmungspunkten #1 und #2. Wenn Du mit beiden o. g.
Namen grundsaetzlich leben kannst, so setzte bei beiden
Punkten ein "JA" zwischen die eckigen Klammern. Solltest
Du einen der Gruppennamen absolut ablehen, so setzte bei
diesem einem Punkt ein "NEIN" und bei dem anderen ein "JA".
Die "sicherere" Variante fuer die Einrichtung einer
VB-Gruppe ist hier bei beiden Punkten mit "JA" zu stimmen.
(Anm.: Da Du ja schon geaeussert hast, dass Du eine
VB-Gruppe unterstuetzen moechtest, gehe ich hier nicht auf
die totale Ablehnung einer VB-Gruppe ein)

Nun gehst Du zu den Punkten #3 und #4. Hier traegst Du bei
dem Gruppennamen ein "JA" ein, auf den Du dich "festgelegt"
hast (s. o.). Bei dem anderen bitte ein "NEIN". Bitte hier
nicht "ENTHALTUNG" oder beide mit "JA". Das ist zwar
grundsaetzlich moeglich und auch eine gueltige Stimmabgabe,
kann aber zu einem Wahlergebnis fuehren, was "keiner"
wollte.

Jetzt nur noch zur Datenschutzklausel. Hier macht nur ein
"JA" sinn. Alles andere fuehrt zu einem ungueltigen
Wahlschein.

Damit ist der Wahlschein ausgefuellt. Du brauchst nur noch
auf senden klicken.

Falls es weiterhin nicht klar ist, melde dich bitte nochmal
und benennen auch wo der Schuh drueckt (also bitte kein
allgemeines "ich verstehe das alles nicht")

Ingo
Thomas Hochstein
2010-08-30 12:22:32 UTC
Permalink
Post by Ingo Moch
Sobald dein Wunsch in der Abstimmmail offensichtlich ist
und Du per Realname mit gueltiger eMail-Adresse abgestimmt
hast, wird deine Stimme in der Regel gezaehlt. Wenn Du
also erstmal grundsaetzlich weisst, was Du fuer eine
Gruppe moechtest, so kannst Du auch "testen". Du bekommst
eine Bestaetigungsmail, wie deine Stimme gezaehlt wurde.
Wenn etwas nicht stimmen sollte, wird sich der Wahlleiter
entweder mit einer Rueckfrage oder mit eine Stimmablehnung
bei dir per Mail melden.
Vorsicht - die Auswertung erfolgt in erster Linie
(teil-)automatisiert, d.h. die Stimme wird ausgewertet und bestätigt.
Eine weitere manuelle Kontrolle bei Unklarheiten erfolgt in der Regel
nicht; ich gehe davon aus, daß der Abstimmende sich meldet, wenn die
Bestätigung nicht das enthält, was er eigentlich gemeint hat. Und:
eine endgültige Wertung der Stimme erfolgt idR erst bei der
Auszählung; daß die Stimme bestätigt wurde, heißt nicht zwingend, daß
sie auch gewertet werden wird. Namentlich betrifft das die
Verpflichtung zur Namensangabe; die automatische Auswertung hält auch
"Krümel Monster" für einen Namen, es ist aber eher zweifelhaft, daß
der Votetaker das auch akzeptiert. ;)

Wer sich nicht sicher ist, kann aber gerne nach (oder auch vor) Erhalt
der Bestätigung beim Votetaker nachfragen.
Post by Ingo Moch
Ggf. jetzt noch die
von dir gewueschte Absende-Adresse waehlen.
Und bedenken, daß diese (a) veröffentlicht wird und (b) per Mail
erreichbar sein muß, wenigstens für die Zeitdauer der Abstimmung und
deren Auswertung.
Post by Ingo Moch
Nun gehst Du zu den Punkten #3 und #4. Hier traegst Du bei
dem Gruppennamen ein "JA" ein, auf den Du dich "festgelegt"
hast (s. o.). Bei dem anderen bitte ein "NEIN". Bitte hier
nicht "ENTHALTUNG" oder beide mit "JA".
Nun ja, warum nicht? Wenn's jemandem wirklich egal ist?

(Interessante Frage: Was passiert eigentlich, wenn die Abstimmung auch
in der Stichfrage absolut identisch ausgeht? Darf der Votetaker dann
würfeln? *eg*)

Grüße,
-thh
--
/°\ --- JOIN NOW! ---
\ / ASCII ribbon campaign
X against HTML
/ \ in mail and news
Schmidt
2010-08-30 14:25:32 UTC
Permalink
Post by Thomas Hochstein
(Interessante Frage: Was passiert eigentlich, wenn die
Abstimmung auch in der Stichfrage absolut identisch
ausgeht? Darf der Votetaker dann würfeln? *eg*)
Das wiederum wäre ein Punkt in der "Problem-Kette",
bis zu dem wir es erstmal gerne schaffen würden... ;-)

Olaf
Thorsten Albers
2010-08-30 14:50:17 UTC
Permalink
Post by Thomas Hochstein
(Interessante Frage: Was passiert eigentlich, wenn die Abstimmung auch
in der Stichfrage absolut identisch ausgeht? Darf der Votetaker dann
würfeln? *eg*)
Nein, nein, das ist wie Pasch beim Würfeln: In dem Fall werden >>alle<< in
der Diskussion für de.* vorgeschlagenen VB.classic-Gruppen eingerichtet...
:-)
--
Thorsten Albers

albers (a) uni-freiburg.de
Ingo Moch
2010-08-31 20:20:00 UTC
Permalink
Post by Thomas Hochstein
Post by Ingo Moch
Sobald dein Wunsch in der Abstimmmail offensichtlich ist
und Du per Realname mit gueltiger eMail-Adresse
abgestimmt hast, wird deine Stimme in der Regel
gezaehlt. Wenn Du also erstmal grundsaetzlich weisst,
was Du fuer eine Gruppe moechtest, so kannst Du auch
"testen". Du bekommst eine Bestaetigungsmail, wie deine
Stimme gezaehlt wurde. Wenn etwas nicht stimmen sollte,
wird sich der Wahlleiter entweder mit einer Rueckfrage
oder mit eine Stimmablehnung bei dir per Mail melden.
Vorsicht - die Auswertung erfolgt in erster Linie
(teil-)automatisiert, d.h. die Stimme wird ausgewertet
und bestätigt. Eine weitere manuelle Kontrolle bei
Unklarheiten erfolgt in der Regel nicht; ich gehe davon
aus, daß der Abstimmende sich meldet, wenn die
Bestätigung nicht das enthält, was er eigentlich gemeint
hat.
Dass da auch etwas anders rauskommen kann als gewollt,
Post by Thomas Hochstein
Post by Ingo Moch
Gefahr beim "testen" ist nur, dass Du zwar eine gueltige
Stimmabgabe vollzogen hast, diese aber ggf. gar nicht das
ausdrueckt, was Du moechtest.
Ggf. jetzt noch die von dir gewueschte Absende-Adresse
waehlen.
Und bedenken, daß diese (a) veröffentlicht wird und (b)
per Mail erreichbar sein muß, wenigstens für die
Zeitdauer der Abstimmung und deren Auswertung.
Das hatte ich ja schon in meine anderen Posting
geschrieben. Dieses Posting hatte ich extra nach
dem Prinzip "Uebersicht durch weglassen" gestaltet.
Post by Thomas Hochstein
Post by Ingo Moch
Nun gehst Du zu den Punkten #3 und #4. Hier traegst Du
bei dem Gruppennamen ein "JA" ein, auf den Du dich
"festgelegt" hast (s. o.). Bei dem anderen bitte ein
"NEIN". Bitte hier nicht "ENTHALTUNG" oder beide mit
"JA".
Nun ja, warum nicht? Wenn's jemandem wirklich egal ist?
Weil ENTHALTUNGEN zu den unschoenen Ergebnissen fuehren
kann, dass eine Option trotz geringer Beteiligung wegen
des besseren Verhaetnisses den Zuschlag bekommt. Ich habe
die Befuerchtung, dass einige "aus Hoeflichkeit" ein
ENTHALTUNG schreiben. In Endeffekt haetten wir - was das
angeht - auch darum bitten koennen, bei #3 und #4 statt
mit NEIN mit ENTHALTUNG zu stimmen. Aber hier denke ich,
wenn wer bei der Stichwahl ein JA setzt muss das andere
ein NEIN sein (zumindest es nur um zwei Moeglichkeiten
geht). Er drueckt ja "nur" sein Praeferenz aus. Das
"egal" ist ja schon in den Punkten #1 und #2 ausgedrueckt
(wenn dort beide ein JA haben).
Post by Thomas Hochstein
(Interessante Frage: Was passiert eigentlich, wenn die
Abstimmung auch in der Stichfrage absolut identisch
ausgeht?
Dann haben wir eine "schoene" Diskussion in dang ;-)
Post by Thomas Hochstein
Darf der Votetaker dann würfeln? *eg*)
Kann er dann ja mal probieren. Hier in mpdv gab es
uebrings mal das Ritual der Freitags-Steinigung ;-)

Ingo

Schmidt
2010-08-24 17:20:23 UTC
Permalink
Post by Joachim Zaich
Es bleibt noch ein Problem dass ich nicht lösen kann - vielleicht
habe ich auch nur zu lange gesucht, da übersieht man dann
doch einiges.
Wie sage ich: Lese 123 Zeichen
VBs Get-Befehl liest im Binärmode immer die Anzahl
Bytes, die auch in den jeweiligen "Ziel-Typ passen".

Im Falle von Strings muss man selbige zuvor in der
richtigen Länge allozieren (wie in Gerts Code
demonstriert mittels Space).

Im Falle von userdefined Types unterstützt VB
beim Lesen/Schreiben gegen Files aber noch eine
ganze Menge mehr, da innerhalb eines solchen
UDTs auch die dynamischen Member (dynamische
Arrays und Strings ohne feste Länge) "sauber und tief"
mitserialisiert werden.

Man kann also Gerts Code (unter Zuhilfenahme
eines kleinen UDT-Wrappers um das StringArray)
sogar noch ein wenig vereinfachen.
Anzumerken wäre noch, dass Gerts Variante etwas
effizienter arbeitet, da er ein temporäres Umkopieren
des zu speichernden StringArrays in und aus dem
UDT-Container vermeidet.

Diese Ineffizienz könnte man umgehen, wenn Du auch
in der Applikation *direkt* mit der UDT-Variablen
(und dem darin enthaltenen StringArray) hantierst.
Eventuell finden sich ja auch neben diesem derzeit
einzigen UDT-Member noch andere im File abzuheftende
Dinge, die Du dann einfach im UDT ergänzen könntest.
An der Schreib- bzw. Leseroutine müsstest Du hierzu
dann jedenfalls nix mehr ändern.


Option Explicit

Private Type UDTContainer_T
StrArr() As String
End Type

Private Sub SchreibeTextArray(sfilename As String, stext() As String)
Dim fnum As Long, UDTContainer As UDTContainer_T
UDTContainer.StrArr = stext

fnum = FreeFile()
Open sfilename For Binary Access Write As #fnum
Put #fnum, , UDTContainer
Close #fnum
End Sub
Private Sub LeseTextArray(sfilename As String, stext() As String)
Dim fnum As Long, UDTContainer As UDTContainer_T
fnum = FreeFile()
Open sfilename For Binary Access Read As #fnum
Get #fnum, , UDTContainer
Close #fnum

stext = UDTContainer.StrArr
End Sub

Private Sub Form_Click()
Dim test() As String
Dim x&
ReDim test(4)
test(0) = "abc"
test(1) = "def"
test(2) = "noch ein Text"
test(3) = "und noch ein anderer"
test(4) = "mal was anderes"
SchreibeTextArray "c:\test.dat", test()
'Inhalt des Arrays erstmal zurücksetzen
ReDim test(0)
'und aus Datei einlesen
LeseTextArray "c:\test.dat", test()
For x = 0 To UBound(test)
Debug.Print test(x)
Next
End Sub


Olaf
Joachim Zaich
2010-08-25 06:27:38 UTC
Permalink
Danke Olaf für die Ergänzung. Ich brauche mein Programm nur geringfügig
Ergänzen. Ich habe wieder eine Menge dazu gelernt.

Grüßle

Joachim
Post by Schmidt
Post by Joachim Zaich
Es bleibt noch ein Problem dass ich nicht lösen kann - vielleicht
habe ich auch nur zu lange gesucht, da übersieht man dann
doch einiges.
Wie sage ich: Lese 123 Zeichen
VBs Get-Befehl liest im Binärmode immer die Anzahl
Bytes, die auch in den jeweiligen "Ziel-Typ passen".
Im Falle von Strings muss man selbige zuvor in der
richtigen Länge allozieren (wie in Gerts Code
demonstriert mittels Space).
Im Falle von userdefined Types unterstützt VB
beim Lesen/Schreiben gegen Files aber noch eine
ganze Menge mehr, da innerhalb eines solchen
UDTs auch die dynamischen Member (dynamische
Arrays und Strings ohne feste Länge) "sauber und tief"
mitserialisiert werden.
Man kann also Gerts Code (unter Zuhilfenahme
eines kleinen UDT-Wrappers um das StringArray)
sogar noch ein wenig vereinfachen.
Anzumerken wäre noch, dass Gerts Variante etwas
effizienter arbeitet, da er ein temporäres Umkopieren
des zu speichernden StringArrays in und aus dem
UDT-Container vermeidet.
Diese Ineffizienz könnte man umgehen, wenn Du auch
in der Applikation *direkt* mit der UDT-Variablen
(und dem darin enthaltenen StringArray) hantierst.
Eventuell finden sich ja auch neben diesem derzeit
einzigen UDT-Member noch andere im File abzuheftende
Dinge, die Du dann einfach im UDT ergänzen könntest.
An der Schreib- bzw. Leseroutine müsstest Du hierzu
dann jedenfalls nix mehr ändern.
Option Explicit
Private Type UDTContainer_T
StrArr() As String
End Type
Private Sub SchreibeTextArray(sfilename As String, stext() As String)
Dim fnum As Long, UDTContainer As UDTContainer_T
UDTContainer.StrArr = stext
fnum = FreeFile()
Open sfilename For Binary Access Write As #fnum
Put #fnum, , UDTContainer
Close #fnum
End Sub
Private Sub LeseTextArray(sfilename As String, stext() As String)
Dim fnum As Long, UDTContainer As UDTContainer_T
fnum = FreeFile()
Open sfilename For Binary Access Read As #fnum
Get #fnum, , UDTContainer
Close #fnum
stext = UDTContainer.StrArr
End Sub
Private Sub Form_Click()
Dim test() As String
Dim x&
ReDim test(4)
test(0) = "abc"
test(1) = "def"
test(2) = "noch ein Text"
test(3) = "und noch ein anderer"
test(4) = "mal was anderes"
SchreibeTextArray "c:\test.dat", test()
'Inhalt des Arrays erstmal zurücksetzen
ReDim test(0)
'und aus Datei einlesen
LeseTextArray "c:\test.dat", test()
For x = 0 To UBound(test)
Debug.Print test(x)
Next
End Sub
Olaf
Loading...