Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DEC 5.1 wie benutzen? (https://www.delphipraxis.net/107798-dec-5-1-wie-benutzen.html)

delphin06 9. Feb 2008 17:13

Re: DEC 5.1 wie benutzen?
 
Ich habe nochmal eine kleine Frage zur Verschlüsselung mit DEC. Und zwar wollte ich fragen wie man das machen würde, wenn man anstatt einem Passwort zum Verschlüsseln eine Datei benutzt. Also ein "Keyfile" sozusagen, wie es bei TrueCrypt der Fall ist. TrueCrypt liest ja ein paar Bytes vom Anfang der Datei und verschlüsselt dann damit. Kann man das mit DEC auch machen, dass man ein Stream von einer Datei öffnet (bestimmte länge vom Anfang) und dann dies als Passwort übergibt?

negaH 10. Feb 2008 01:34

Re: DEC 5.1 wie benutzen?
 
Ja geht, allerdings auf Umwegen ;)

1.) Datestream öffnen
2.) einen TMemoryStream erzeugen und die Bytes aus dem Dateistream lesen
3.) .Init(MemoryStream.Memory^, MemoryStream.Size); aufrufen

Aber Vorsicht! Diese Methode muß sehr genau überlegt sein. Besser ist es mit zb. THash_SHA1.CalcFile(KeyFileName, TFormat_Copy) erstmal nur einen digitalen Fingerabdruck der Schlüsseldatei zu erzeugen. Dieser 160 Bit Wert wird dann mit Hilfe einer KDF und einem Zufallssalt in einen Sessionkey umgewandelt. Benutzt du direkt den Inhalt einer beliebigen Datei als Passwort so ist die Wahrcheinlichkeit sehr hoch das du schlechte Schlüssel erzeugst. Denn viele Dateien enthalten zb. große Datenbereiche die zb. nur aus Nullen bestehen, deren Inhalte auf Grund von Headern quasi bekannt sind und somit erraten werden können. Die Entropie solcher Dateien muß also komprimiert werden, am besten mit einer Hash Funktion. Es sei denn diese Schlüsseldatei wurde mit echten Zufall befüllt. Nur ist dann der Sinn das der Anwender sich eine beliebige Datei auf seinem Rechner als Schlüsseldatei auswählt, und so nur deren Location merken muß, fraglich.

Also besser wäre es wenn du obige Funktionen von mir so aufrufen würdest:

Encrypt(bla,bla, THash_SHA256.CalcFile(KeyFileName, TFormat_Copy));

Gruß Hagen

delphin06 10. Feb 2008 12:03

Re: DEC 5.1 wie benutzen?
 
OK danke! Werde ich mal versuchen.

delphin06 21. Feb 2008 17:28

Re: DEC 5.1 wie benutzen?
 
Ich wollte jetzt nicht wieder einen extra Thread aufmachen, also frag ich einfach nochmal hier nach.

Erstmal muss ich sagen das DEC ist einfach super! Gut das es Leute gibt die sich die Arbeit machen und sowas zusammenstellen.


Ich habe allerdings nochmal eine Frage. Und zwar rufe ich die decrypt-function schon in der FormCreate auf. Jetzt bekomme ich allerdings eine Exception von der Funktion:
Delphi-Quellcode:
function DECClassByIdentity(Identity: LongWord; ClassType: TClass): TDECClass;

  function DoFind(Identity: LongWord; ClassType: TDECClass): Boolean;
  begin
    Result := ClassType.Identity = Identity;
  end;

begin
  Result := DECEnumClasses(@DoFind, Pointer(Identity), ClassType);
  if Result = nil then
    raise EDECException.CreateFmt(sClassNotRegistered, [IntToHEX(Identity, 8)]); //Hier die Exception
end;
Die Funktion "DECClassByIdentity" wird ja so ziemlich am Anfang der decrypt-function aufgerufen.

Da muss wohl erst irgendeine Klasse registriert werden, aber welche? Und vor allem wie registriere ich diese.
Vieleicht habe ich ja irgendwas übersehen, aber ich finde den Fehler einfach nicht.

Gruß


[EDIT] Man bin ich ein Trottel!
Ich weiß was ich vergessen hab!

Delphi-Quellcode:
  SetDefaultCipherClass(TCipher_Rijndael);
  SetDefaultHashClass(THash_SHA1);
  IdentityBase := $84485225;
  RegisterDECClasses([TCipher_Rijndael, THash_SHA1]);
:wink: ich sollte mir mal angewöhnen erst zu denken und dann zu schreiben :lol:

negaH 21. Feb 2008 19:01

Re: DEC 5.1 wie benutzen?
 
Delphi-Quellcode:
  SetDefaultCipherClass(TCipher_Rijndael);
  SetDefaultHashClass(THash_SHA1);
  IdentityBase := $84485225;
  RegisterDECClasses([TCipher_Rijndael, THash_SHA1]);
das RegisterDECCasses() kannst du in diesem Falle weglassen, da beide Klassen schon bei SetDefaultCipherClass() und SetDefaultHashClass() automatisch registeriert werden.

Als Alternativ zu RegisterDECCalsses([..]) geht auch der dirkete Aufruf mit

Delphi-Quellcode:
THash_SHA1.Register;
TCipher_Rijndael.Register;
Allerdings benötigt man dies nur wenn man ausgehende von einer Identity, das ist eine Cardinal Zahle die Eindeutig zur DEC Klasse sein sollte, diese Zahl aus einem TStream lädt um ein DEC Klasse Objekt zu laden. Man speichert also zb. TCipher_Rijndeal.Identity als Zahl in einem Stream. Später lädt man diese Identity wieder aus dem Stream und sucht mit CpiherByIdentity(Identity aus TStream) die TCipher_Rijndael Klasse. Der Wert in IdentityBase ist Anwendungsbezogen und beeinflusst alle .Identity Werte aller DECClassen. Man kann also durch das Änderen dieses Wertes alle Identity Codes serialisieren so das nur mit diesem bekannten Wert DEC Klassen aus Stream geladen werden können.

Du kannst also somit eine Datei mit einem variaben Cipher/Hash verschlüsseln, speicherst die Identity dieser benutzen Klassen als Header in der verschlüsselten Datei. Beim Entschüsseln lädst du erstmal diese Identities wieder aus diesem TStream, holst dir mit HashByIdentity() und CipherByIdentity() diese Klassen, erzegtst damit deiner Objekte und entschlüsselst den Rest des Streams. Somit kannst du mit verschiedenen Cipher/Hashs arbeiten stattt nur mit hardcoded Klassen.

Wenn du aber meinen obigen Vorschlag an Funktionen gearbeitet hast dann sollte eigentich in den globalen Konstanten die korrekte Klasse schon gesetzt sein. Dies ist aber bei dir anscheinend nicht der Fall, dh. du hast diese Konstanten aus NIL gesetzt. Das führt nun dazu das

with ValidCipher(globale Konstane == nil).Create do

die Funktion ValidCipher() die übergebene Klasse==nil überprüft. ValidCipher() gibt bei NIL als Parameter die mit SetDefaultCipherClass() installierte Klasse zurück.

Du hast also deine globalen Konstanten nicht richtig initialisert, eg. auf NIL stehen, alos hier

Delphi-Quellcode:
const
  ACipherClass: TDECCipherClass = TCipher_Rijndael;
  AKDFClass: TDECHashClass = THash_SHA1;
Es sei denn du benutzt die Methode aus dem allerersten Posting. Diese speichert natürlich die .Identity der benutzten Klassen in den TStream.
Dann musst du mit RegisterDECClasses([]) alle DEC Klassen, eg. Hash und Cipher, registrieren die du in der Gegenwart und Zukunft benutzen möchtest. Denn nur bei alle diesen registrierten Klassen ist sichergestellt das der Wert von .Identity auch eineindeutig ist, das ist wichtig.
Der Aufruf von RegisterDECClasses([]) sollte in der Initialization Sektion der Unit steht, also nur einmalig aufgerufen werden (man kann es aber auch mehrmals aufrufen wenn nötig). Dabei ist WICHTIG das der Wert in BaseIdentity noch davor gesetzt wird !! Also auch vor dem Aufruf von SetDefaultCipherClass(), SetDefaultHashClass() und evtl. TCipher_XYZ.Register und THash_XYZ.Register.


Gruß Hagen

delphin06 22. Feb 2008 15:20

Re: DEC 5.1 wie benutzen?
 
Ich benutze so in etwa die function die ich so ziemlich am Anfang mal gepostet habe nur halt für n Memorysream umgeschrieben.

Und den Code:
Delphi-Quellcode:
SetDefaultCipherClass(TCipher_Rijndael);
  SetDefaultHashClass(THash_SHA1);
  IdentityBase := $84485225;
  RegisterDECClasses([TCipher_Rijndael, THash_SHA1]);
Rufe ich beim Start in der Formcreate() auf. Da ich nur diese eine Verschlüsselung benutze sollte es da keine Probleme geben oder?


Also ich benutze diese beiden Funktionen jeweils zum entschlüsseln bzw. verschlüsseln:
Delphi-Quellcode:
procedure EncodeMStream(const ADestFilename: String; const APassword: Binary;
                       ACipher: TDECCipherClass = nil; AMode: TCipherMode = cmCTSx;
                       AHash: TDECHashClass = nil);
var
  Dest: TStream;

  procedure Write(const Value; Size: Integer);
  begin
    Dest.WriteBuffer(Value, Size);
  end;

  procedure WriteByte(Value: Byte);
  begin
    Write(Value, SizeOf(Value));
  end;

  procedure WriteLong(Value: LongWord);
  begin
    Value := SwapLong(Value);
    Write(Value, SizeOf(Value));
  end;

  procedure WriteBinary(const Value: Binary);
  begin
    WriteByte(Length(Value));
    Write(Value[1], Length(Value));
  end;

var
  Sourcestr: TMemoryStream;
  Seed: Binary;
begin
  ACipher := ValidCipher(ACipher);
  AHash := ValidHash(AHash);
  Seed := RandomBinary(16);
  Sourcestr:=TMemorystream.Create();
  try
    sourcestr.WriteComponent(Form1.listview1);
    SourceStr.Position := 0;
    Dest := TFileStream.Create(ADestFilename, fmCreate);
    try
      with ACipher.Create do
        try
          Mode := AMode;
          Init(AHash.KDFx(APassword, Seed, Context.KeySize));

          WriteLong(Identity);
          WriteByte(Byte(Mode));
          WriteLong(AHash.Identity);
          WriteBinary(Seed);
          WriteLong(Sourcestr.Size);
          EncodeStream(Sourcestr, Dest, Sourcestr.Size);
          WriteBinary(CalcMAC);
        finally
          Free;
        end;
    finally
      Dest.Free;
    end;
      //ProtectStream(Source);
  finally
    Sourcestr.Free;
  end;
  //DeleteFile(AFileName);
end;

procedure TForm1.DecodeMStream(const ASourceFileName: String; const APassword: Binary);
var
    Source: TStream;

  procedure Read(var Value; Size: Integer);
  begin
    Source.ReadBuffer(Value, Size);
  end;

  function ReadByte: Byte;
  begin
    Read(Result, SizeOf(Result));
  end;

  function ReadLong: LongWord;
  begin
    Read(Result, SizeOf(Result));
    Result := SwapLong(Result);
  end;

  function ReadBinary: Binary;
  begin
    SetLength(Result, ReadByte);
    Read(Result[1], Length(Result));
  end;

var
    Dest: TMemoryStream;
    error:Boolean;
begin
  error:=false;
  Source := TFileStream.Create(ASourceFileName, fmOpenRead or fmShareDenyNone);
  try
    try
      Dest := TMemorystream.Create;
      try
        try
          with CipherByIdentity(ReadLong).Create do
          try
            Mode := TCipherMode(ReadByte);
            Init(HashByIdentity(ReadLong).KDFx(APassword, ReadBinary, Context.KeySize));
            DecodeStream(Source, Dest, ReadLong);
            if ReadBinary <> CalcMAC then
              //raise EDECException.Create('Invalid decryption');
              begin
                showmessage('Fehler: falsches Passwort');
                error:=true;
              end;
          finally
            Free;
          end;
        except
          //ProtectStream(Dest);
          raise;
        end;
        finally
          dest.Position := 0;
          if error = false then        
            dest.ReadComponent(Form1.ListView1);
          Dest.Free;
        end;
      except
      //DeleteFile(ChangeFileExt(AFileName, ''));
      raise;
    end;
  finally
    Source.Free;
  end;
  if error = true then
    begin
      form1.close;
      PasswordDlg.Close;
    end
  else
    begin
      form1.Enabled:=true;
      form1.Visible:=true;
    end;
end;
Und dann halt die Klassenregestrierungen im formcreate().

Gruß

noway 24. Mär 2008 08:51

Re: DEC 5.1 wie benutzen?
 
Hallo zusammen,

ich hoffe, die Eier sind gefunden im Schnee... :-)

Ich habe mir diesen Thread mal durchgelesen und bin bei der Unit "MyCrypt" hängen geblieben, die für meine Zwecke OK ist.
Wie kann ( muss ) ich abfragen, ob das Passwort richtig eingegeben wurde.
Und wie man ggf. auf ein falsches Kennwort reagiert.
Bei mir klappt das irgendwie nicht
Kann mir jemand helfen ?


Gruß
Thomas

Sharky 24. Mär 2008 09:32

Re: DEC 5.1 wie benutzen?
 
Hai Thomas,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS".

Zitat:

Zitat von noway
... Wie kann ( muss ) ich abfragen, ob das Passwort richtig eingegeben wurde. ...

Lese Dir doch mal diesen Beitrag von negaH durch.
Der sollte Dir helfen.

noway 24. Mär 2008 10:48

Re: DEC 5.1 wie benutzen?
 
Hallo Sharky,

danke erstmal für das "Willkommen" und wür die schnelle Antwort.
Ich bin jetzt nicht so der große Delphianer und bekommt das irgendwie nicht umgesetzt.

Hilfe ???? :oops:

Tom

noway 29. Mär 2008 06:14

Re: DEC 5.1 wie benutzen?
 
Hallo zusammen,

habe mir mal den Beitrag durchgelesen, kann ihn nur nicht umsetzen
Delphi-Quellcode:
Salt_1 = RandomBinary(16);
Salt_2 = RandomBinary(16);
SessonKey = KDF(Salt_1, Passwort);
Checksum = MGF(Salt_2, SessionKey);
CipherText = ENCYPT(SessionKey, Salt_2 + Checksum + PlainText);
FinalData = Salt_1 + CipherText;
Finde diese KDF und MGF funktionen nicht
Kann mir das jemand übersetzen

Wäre echt gut

Danke schonmal
noway

OG Karotte 29. Mär 2008 10:27

Re: DEC 5.1 wie benutzen?
 
Zitat:

Zitat von noway
Finde diese KDF und MGF funktionen nicht
Kann mir das jemand übersetzen

Die KDF bzw. MGF Funktionen gehören jeweils zu dem verwendeten Verfahren.
Also z.B.:
Delphi-Quellcode:
SessionKey := THash_RipeMD256.KDFx(Salt_1, Passwort);
SessionKey := THash_RipeMD256.KDF1(Salt_1, Passwort);
// oder
CheckSum := THash_MD5.MGF1(Salt_2, SessionKey);
CheckSum := THash_MD5.MGFx(Salt_2, SessionKey);

noway 29. Mär 2008 16:49

Re: DEC 5.1 wie benutzen?
 
Hallo zusammen,

ich bekomme folgende Meldung

Delphi-Quellcode:
There is no overloaded version of 'KDFx' that can be called with these arguments
Was bedeutet das ?

Ratlos
Noway (der Name ist Programm :-D )

OG Karotte 29. Mär 2008 16:58

Re: DEC 5.1 wie benutzen?
 
Das höchstwahrscheinlich die Parameteranzahl oder der Parametertyp nicht stimmt.

Solltest Du Dich auf meine Beispiele von oben beziehen: das sind nur grobe Beispiele!!!

Genauere Funktionen/Beschreibungen findest Du aber auch hier im Forum -> Hier im Forum suchenDEC

Ansonsten: Wenn Du 'Codevervollständigung' in der IDE benutzt oder mit der Maus über den Eintrag 'KDFx' fährst, solltest Du die Anzahl und Typen der erwarteten Parameter erhalten. Auch ein Blick in die entspr. DEC-Unit könnte helfen...

noway 30. Mär 2008 06:15

Re: DEC 5.1 wie benutzen?
 
Danke erstmal für die Anwtwirt.

Leider finde ich im Forum nicht das, was ich suche bzw. ich such falsch

Irgendwie habe ich es hinbekommen, das o.g. Meldungen nicht mehr erscheinen.
(Fragt sich nur, ob das die richtigen Parameter waren.)

Jetzt wird mir "ENCYPT" angemeckert. Wird nicht erkannt.

Ist es nicht möglich, von den Cracks hier, mir den Code mal zu übersetzen ? Wenn nicht , dann auch gut :?

Delphi-Quellcode:
Salt_1 = RandomBinary(16);
Salt_2 = RandomBinary(16);
SessonKey = KDF(Salt_1, Passwort);
Checksum = MGF(Salt_2, SessionKey);
CipherText = ENCYPT(SessionKey, Salt_2 + Checksum + PlainText);
FinalData = Salt_1 + CipherText;

und entschlüsselt dann so:

Salt_1 = EXTRACT(FinalData, 1, 16);
SessionKey = KDF(Salt_1, Passwort);
Temp = DECRYPT(SessonKey, EXTRACT(FinalData, 16, MaxInt));
Salt_2 = EXTRACT(Temp, 1, 16);
Checksum = EXTRACT(Temp, 16, 16);
if Checksum <> MGF(Salt_2, SessionKey) then ShowMessage('Falsches Passwort');
PlainText := EXTRACT(Temp, 32, MaxInt);
Gruß
Noway

OG Karotte 30. Mär 2008 11:00

Re: DEC 5.1 wie benutzen?
 
Zitat:

Zitat von noway
Jetzt wird mir "ENCYPT" angemeckert. Wird nicht erkannt.

Die Funktion heisst wohl eher Encrypt.

Und das hier sind eher Vergleiche als Zuweisungen (vermute aber mal das es nur Typo's sind, oder???)
Code:
Salt_1 = RandomBinary(16); // Vergleich (allerdings ohne Sinn)

Salt_1 := RandomBinary(16); // Zuweisung (so sollte es sein)
Wie das ver- und entschlüsseln funktioniert, bzw. was dabei beachtet werden muss/sollte und die Handhabung insbesondere der Funktionen KDF usw. ist an mehreren Stellen hier im Forum sehr schön beschrieben: z.B.:Hier im Forum suchenDEC AND Salt

dominikkv 30. Mär 2008 12:51

Re: DEC 5.1 wie benutzen?
 
Kleine Frage am Rande:
Gibt es sowas wie eine "offizielle Homepage" für DEC?
Ich will in den Abouts von meinem Programm DEC erwähnen und gleich zu der Homapage verlinken...
Ist das hier die richtige Adresse?

negaH 31. Mär 2008 00:33

Re: DEC 5.1 wie benutzen?
 
Ist veraltet, da arbeite ich schon lange nicht mehr.

Mein obige "Sourcecode" ist nur ein Pseudocode, sprich eine Formel oder Algorithmus oder Arbeitsanweisung. Das kannst du nicht direkt mit DEC so übernehmen.

Gruß Hagen

noway 11. Mai 2008 17:46

Re: DEC 5.1 wie benutzen?
 
Zitat:

Zitat von noway
Danke erstmal für die Anwtwirt.
Temp = DECRYPT(SessonKey, EXTRACT(FinalData, 16, MaxInt));
Noway

Hallo zusammen,
ich versuche es noch ein letztes Mal.
Woher kommt die Funktion "EXTRACT" ?
Kann mir da jenmand helfen

Danke

Noway

noway 13. Mai 2008 21:14

Re: DEC 5.1 wie benutzen?
 
Zitat:

Zitat von noway
Zitat:

Zitat von noway
Danke erstmal für die Anwtwirt.
Temp = DECRYPT(SessonKey, EXTRACT(FinalData, 16, MaxInt));
Noway

Hallo zusammen,
ich versuche es noch ein letztes Mal.
Woher kommt die Funktion "EXTRACT" ?
Kann mir da jenmand helfen

Danke

Noway

Hat keiner eine Ahnung ?

Sharky 13. Mai 2008 21:18

Re: DEC 5.1 wie benutzen?
 
Zitat:

Zitat von noway
.... Hat keiner eine Ahnung ?

Hai noway,

sich selber zu zitieren sieht nie gut aus ;-) Aber das nur am Rande.

hast Du denn gelesen was Hagen (der Entwickler des DEC) geschrieben hat?

noway 14. Mai 2008 09:29

Re: DEC 5.1 wie benutzen?
 
Hallo sharky,

was soll ich denn wo gelesen haben ? :?:
Soweit ich gelesen habe, habe ich keine Antwort auf meine Frage gefunden,
sonst hätte ich sie wohl kaum gestellt. :wink:

Ich möchte echt nicht böse klingen, aber wenn das hier in Rätselraten ausartet,
dann kann ich auch so weitermachen wie bisher, und sinnlos experimentieren.
Ich habe Verständnis dafür, dass man hier nicht die Programme für andere schreiben
will und kann. Ist auch in Ordnung.

Aber wenn man halt nicht den Durchblick hat und nur die Funktion benötigt,
brauche ich doch nicht unbedingt das komplette Verständnis, wie in diesem Fall, für die Verschlüsselung zu haben.
Ich habe seit 20 Jahren einen Führerschein sowie ein Auto, und trotzdem habe ich nur
rudimentäre Kenntnisse in Sachen Motoren.

So.... bis denne oder auch nicht :mrgreen:

Noway (Der Name der Programm ist)

Muetze1 14. Mai 2008 09:56

Re: DEC 5.1 wie benutzen?
 
Na dann für dich nochmal extra zitiert aus den Beiträgen:

Zitat:

Zitat von negaH
Mein obige "Sourcecode" ist nur ein Pseudocode, sprich eine Formel oder Algorithmus oder Arbeitsanweisung. Das kannst du nicht direkt mit DEC so übernehmen.


noway 14. Mai 2008 10:21

Re: DEC 5.1 wie benutzen?
 
Also doch Rätselraten :gruebel:

Hepdepaddel 22. Nov 2008 07:27

Re: DEC 5.1 wie benutzen?
 
Zitat:

Zitat von negaH
Ich habe also nichts dagegen einzuwenden das sich die deutsche Sprache auch weiterentwickeln kann. Das ist auch ein Grund dafür das ich einfach kurz und bündig darauf reagiere -> willst du Hilfe dann rede deutsch mit mir, fertig. Das mag zwar arrogant oder sonstwas erscheinen, aber die Faktenlage ist nun mal so, ich kann diesen Druck ausüben. Das heist also nicht das ich ein Nationalist oä. bin, sondern ich reagiere aktiv, statt es hinzunehmen.

(ich stöbere hier gerade zum Thema Verschlüsselung in den Posts, daher die "späte Antwort")

Wenn es auch OT ist - aber Threads entwickeln sich eben manchmal: Die Einstellung, in Foren möglichst sauber zu schreiben, finde ich gut und ich kann auch verstehen, dass man als Wissender bei so manchem Posting kein Interesse an einer Antwort hat. Aber das Ausgangsposting ist eigentlich noch ganz human und die Frage insgesamt verständlich. Wenn man sich so manches andere Posting anschaut, wird einem da schon eher flau im Magen. Ja, es sind einige seltsame Worte darin, bei denen man an defekte Tasten denkt.

Am Rande: Wer ausdrücklich auf korrektem Deutsch besteht, braucht deswegen zwar selber nicht jeden Tippfehler zu vermeiden, aber einen guten bis sehr guten Standard, sollte man dann schon selbst halten. Ich kann und will ja gar keinen Druck ausüben, aber mal als Polemik formuliert: Zwischen dass und das gibt es einen Unterschied, der auch Kommas nach sich zieht. Und wer Deutsch groß schreibt, der sollte das auch tun. Manche Leute heißen Nationalisten, man findet sie aber nicht bei Heise. Ich will damit nur eines sagen: Wir sind alle nicht perfekt und ich fände es schade, wenn man ein hervorragendes Wissen in einem Bereich nutzt, um in einem anderen Bereich, in dem man nicht so gut ist, Standards setzen zu wollen.

Dieses Posting soll keinen Sprachstreit begründen. Ich bewundere Deine Kenntnisse im Thema Verschlüsselung. Die Beiträge hier im Forum sind ein echter Lichtblick in der Praxis der Kryptografie für jeden, der sich mühsam in das Thema einzulesen versucht. Ehrlich danke dafür! Insofern freue ich mich, dass Du in diesem Thread trotz der Sprache im Ausgangsposting geantwortet hast, denn die Ausführungen lassen mich einiges besser verstehen, was ich hier gerade im Theoriebuch gelesen habe. Deine Antworten helfen also nicht nur den Fragestellern. "Keine Antwort" übt also auch Druck auf die aus, die gar keine Frage gestellt haben!

In dem Sinn - viele Grüße und weiter so! :thumb:

Hepdepaddel

negaH 23. Nov 2008 13:02

Re: DEC 5.1 wie benutzen?
 
Tote sollte man ruhen lassen. Davon abgesehen ging es nicht um korrektes Deutsch sondern um absichtlich eingeführten Slang, der nur den Nutzen hat sich zu separieren oder ein Produkt zu verkaufen. Die Entscheidung ob und wie ich antworten möchte oder nicht obliegt einzig mir, fakt. Die Entscheidung meine Gründe für meine getroffene Entscheidung einem Anderen darzulegen, also warum ich welche Konsequenzen für mich ziehe, obliegt ebenfalls nur mir. Es gibt darüber keinerlei Urteile zu fällen, da sonst jedes solches Urteil ein Eingriff in die Meinungsfreiheit darstellt, also respektlos wäre.
Du kannst natürlich eine andere Meinung vertreten und auch Kritik üben, das respektiere ich. Ich habe letzendlich garkeine Kritik geübt sondern einfach mein Handeln und das Warum erklärt, also eine Tatsache. Das mag für dich arrogant klingen aber wenn du mal darüber nachdenkst dann ist es nur Konsequenz.

Zitat:

"Keine Antwort" übt also auch Druck auf die aus, die gar keine Frage gestellt haben!
Und deshalb antworte ich denoch und hatte eigentlich nicht vor eine solche Diskussion vom Zaun zu brechen. Ich kann nicht Alle für das Verhalten Eines bestrafen und ich kann aber auch nicht das aus meiner Sicht falsche Verhalten des Einzelnen ignorieren. Ergo: einfach eine Tatsache darlegen und die Konsequenzen aufzeichnen, punkt.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 Uhr.
Seite 2 von 2     12   

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