Nach Hause
Top.Mail.Ru Yandeks.Metrika
Forum: "Andere";
Aktuelles Archiv: 2012.02.05;
Herunterladen: [xml.tar.bz2];

Nach unten

Hmm, das Problem ... Finden Sie ähnliche Zweige


Rouse_ ©   (2011-10-14 23:31) [0]

Diese Aufgabe wurde im August des 2004-Jahres in einem Park neben dem Puschkinski-Kino auf einer Bank angekündigt, auf der zwei Leichen nach harter Arbeit aufgehängt hatten - Zotych und Rozych :)

... und inspiriert von diesem Thread: http://delphimaster.net/view/2-1318507172/

Die Aufgabe sieht einfach aus, es gibt zwei Code-Optionen:

Prozedur TForm1.Button1Click (Sender: TObject);
jung
DC: HDC;
S: String;
beginnen
DC: = Canvas.Handle;
S: = Memo1.Lines [0];
TextOut (DC, 10, 10, PChar (S), Länge (S));
end;

Prozedur TForm1.Button2Click (Sender: TObject);
jung
DC: HDC;
S: String;
beginnen
S: = Memo1.Lines [0];
DC: = Canvas.Handle;
TextOut (DC, 10, 10, PChar (S), Länge (S));
end;


Es ist notwendig zu bestimmen, welche von ihnen falsch funktionieren und warum.



Бездомный   (2011-10-14 23:36) [1]

DC: = Canvas.Handle;
S: = Memo1.Lines [0];

DC ist jetzt inaktiv.



Rouse_ ©   (2011-10-14 23:46) [2]


> Obdachlose (14.10.11 23: 36) [1]
> DC ist jetzt inaktiv.

Die Antwort ist nicht vollständig, die Frage war: "Es ist notwendig zu bestimmen, welche von ihnen falsch funktionieren wird und warum. "



Jeer ©   (2011-10-14 23:47) [3]

Mit anderen Worten, die "Form" von der Leinwand ist nur bis zum Zeitpunkt des Verweises auf andere Elemente auf der "Leinwand" gültig.
Denn es war ursprünglich nur zum Drucken von Leinwand oder in ein "Bild" gedacht.



Rouse_ ©   (2011-10-14 23:51) [4]


> Jeer © (14.10.11 23: 47) [3]
>
> Mit anderen Worten, die "Form" von der Leinwand ist nur gültig bis
> Der Moment des Verweises auf andere Elemente auf der "Leinwand".

Die Antwort ist falsch. Dies wird durch den folgenden Code deutlich, bei dem beide Handler einwandfrei funktionieren:

procedure TForm1.Button1Click (Sender: TObject); var DC: HDC; S: String; beginne DC: = Canvas.Handle; S: = Button1.Caption; TextOut (DC, 10, 10, PChar (S), Länge (S)); Ende; procedure TForm1.Button2Click (Sender: TObject); var DC: HDC; S: String; beginne S: = Button2.Caption; DC: = Canvas.Handle; TextOut (DC, 10, 10, PChar (S), Länge (S)); ende



Jeer ©   (2011-10-14 23:52) [5]

Beides wird korrekt funktionieren, aber jedes in seinem eigenen Kontext.
Wenn die "Beobachtung der Schlussfolgerung" - dann die zweite.



Rouse_ ©   (2011-10-14 23:54) [6]


> Jeer © (14.10.11 23: 52) [5]
>
> Beide werden korrekt funktionieren, aber jeder in seinem eigenen Kontext.
> Wenn über die "Beobachtung vyvoda" -die zweite.

Übersetzen ...



Jeer ©   (2011-10-14 23:55) [7]


> Die Antwort ist nicht richtig,


"Treue" ist ein relativer Begriff.
Lange Brote sind ein Überbau.
Memo - Leinwand.



Jeer ©   (2011-10-14 23:57) [8]

Wir nehmen einen Malkasten - dieser ist in der Regel anfangs Teil der Leinwand, nur ein Teil davon.



Rouse_ ©   (2011-10-14 23:58) [9]


> Jeer © (14.10.11 23: 55) [7]
>
>
Zitiert1 >> Die Antwort ist nicht richtig,
>
>
> "Fidelity" -relatives Konzept.
> Laibe sind ein Überbau.
> Memo-Zugehörigkeit zur Leinwand.

Schwer ...
Ok, sagen wir mal, ein Memo, wie sieht die Leinwand aus? Ist es besonders interessant herauszufinden, von wo aus die Schaltfläche nicht hineinpasst?



Rouse_ ©   (2011-10-14 23:59) [10]


> Jeer © (14.10.11 23: 57) [8]
>
> Nehmen Sie den Malkasten - dieser ist in der Regel anfangs insgesamt Teil der Leinwand
> nur Ernte von seinem Teil.

Nun, es ist alles klar, aber wird die Antwort auf die Frage sein?



Jeer ©   (2011-10-15 00:02) [11]

:)
Nun, der Knopf ist höher als die Leinwand :)
Inhouse-Rendering.

PS
Komm schon, denk nicht dran - ich bin hier, um nach der Hochzeit meiner Tochter müde zu werden :)



Rouse_ ©   (2011-10-15 00:06) [12]

Ja, ich habe so etwas verstanden - übrigens nochmal herzlichen Glückwunsch :)

PS: aber die Antwort wurde noch von niemandem gegeben.



Jeer ©   (2011-10-15 00:10) [13]


> PS: aber die Antwort wurde noch von niemandem gegeben.


Ist die Verwendung von Memo in diesem Beispiel grundsätzlich dieselbe?
Oder ähnliche "Ausschnitte" in der Leinwand?



Rouse_ ©   (2011-10-15 00:11) [14]


> Jeer © (15.10.11 00: 10) [13]
> Nun, die Verwendung von Memo in diesem Beispiel ist grundsätzlich
> was?
> Oder ähnliche "Ausschnitte" in der Leinwand?

Nicht grundsätzlich können Sie andere Steuerelemente verwenden ...



Германн ©   (2011-10-15 00:22) [15]


> Es muss ermittelt werden, welche von ihnen fehlerhaft funktionieren und warum.

Hm. Am Ende wird es interessant sein, herauszufinden, was der moderne Assembler für Intel & AMD damit zu tun hat. Oder nicht modern, sondern die, die der Delphic-Compiler in 2004 verwendete, als die oben genannten Kater "in einem Park neben dem Pushkinsky-Kino" waren :)



Eraser ©   (2011-10-15 00:31) [16]

Vom Moderator gelöscht



Rouse_ ©   (2011-10-15 00:38) [17]


> Hmm. Es wird am Ende interessant sein, herauszufinden, was die Moderne ist
> Assembler für Intel & AMD?


Wenn du das Problem auf asmu sehen willst, dann habe ich sie.
Dieser Code zeigt die Zeile "Test" in der Konsole ein- bis mehrmals an.
Die Aufgabe besteht darin, herauszufinden, wie oft und warum, ohne zu kompilieren.
"Wie viel", denke ich, und so ist es klar - kompilieren Sie Ihren Favoriten, dann ist die Frage - wie?

Programm Project1; {$ APPTYPE CONSOLE} verwendet SysUtils Verfahren tst; beginne writeln ("Test"); Ende; beginne asm ruf tst lea eax, tst lea ecx, @1 drücken Sie ecx Schieben Sie eax Schieben Sie eax Rufe eax an ret @1: Ende; Readln ende.



Eraser ©   (2011-10-15 00:38) [18]

Vom Moderator gelöscht
Hinweis: Bingo ...



Rouse_ ©   (2011-10-15 00:56) [19]


> Radierer © (15.10.11 00: 38) [18]

Absolut korrekte Fehlererkennung - mein Respekt ...



Rouse_ ©   (2011-10-15 01:16) [20]


> Radierer © (15.10.11 00: 38) [18]

Wirst du das zweite Rätsel aus dem 17-Beitrag lösen?



Бездомный   (2011-10-15 01:17) [21]

Welche Art von Willkür? =))



Rouse_ ©   (2011-10-15 01:21) [22]


> Obdachlose (15.10.11 01: 17) [21]
>
> Welche Art von Willkür? =))
>

In Planung?



Kerk ©   (2011-10-15 01:23) [23]

Meiner Meinung nach dreimal. Könnte schon spät verloren gehen.
Die Quintessenz ist, dass ret beim Verlassen der Funktion die Rücksprungadresse vom Stapel nimmt. Dann überlege dir :)



Rouse_ ©   (2011-10-15 01:27) [24]


> Kerk © (15.10.11 01: 23) [23]

Fast richtig und der Stack stimmte richtig ...



Kerk ©   (2011-10-15 01:30) [25]

Ah, nun, ich habe zuerst einen Anruf verpasst :)
Über den Stapel - in meiner Jugend mochte ich Viren, da steht das Alphabet :)



Rouse_ ©   (2011-10-15 01:33) [26]


> Kerk © (15.10.11 01: 30) [25]
> Ah, nun, ich habe zuerst einen Anruf verpasst :)

Ich habe es vermisst :)
Es gibt eine Nuance beim Abrufen des Rückrufs durch die aufgerufene Funktion, d.h. Hintrick auf Double RET-RET für Stack Overflow ...



Rouse_ ©   (2011-10-15 01:36) [27]

verdammt, beschissener Partisan von mir :)



Kerk ©   (2011-10-15 01:41) [28]

Aber ist dieser Ret im Allgemeinen erfüllt? Dort geht der letzte Sprung zu ECX, der nach diesem Ret auf @1 zeigt.



Rouse_ ©   (2011-10-15 01:47) [29]


> Kerk © (15.10.11 01: 41) [28]
>
> Aber ist dieser Ret überhaupt vollständig?

:)



Kerk ©   (2011-10-15 01:49) [30]

Entschuldigung, ich bin dumm. Immerhin startet dieses Ret die ganze Kette.
Ich gehe schlafen, um keine dummen Dinge anzuhäufen :)



Rouse_ ©   (2011-10-15 01:59) [31]

Sagen wir, es startet, startet aber nicht - aber das Fazit ist richtig :)



Бездомный   (2011-10-15 03:06) [32]

rufe tst // 1 mal auf lea eax, tst lea ecx, @1 drücken Sie ecx push eax // "stack1" push eax // "stack2" Rufe eax // zum zweiten Mal auf ret // hier ist der dritte Aufruf, und ret von tst ruft 4-mal auf, weil wird denken, dass die Rücksprungadresse die auf "stack1" ist. ret from tst 4 kehrt zu @1 zurück @1:
nicht wahr?



Германн ©   (2011-10-15 03:07) [33]


> Nun, wenn du die Aufgabe auf asmu sehen willst, dann habe ich sie.

Ich habe sie auch Nur das AFM ist anders.
Ich überlege, wie ich die 8-Byte-Zahl eindeutig mit der 13-Dezimalzahl darstellen kann. Und das verstehe ich in keiner Weise. :(

Und wohin dann, armer Bauer, trauriger Entwickler? Wenn er gebeten wurde, einen Konverter "microlane" -> Barcode zu entwickeln.



Бездомный   (2011-10-15 03:08) [34]

"stack1" und "stack2" müssen getauscht werden =)



Kerk ©   (2011-10-15 03:13) [35]


> Obdachlose (15.10.11 03: 06) [32]

Es funktioniert für mich, aber Rozych sagt, dass es nicht 4 ist



Rouse_ ©   (2011-10-15 03:17) [36]


> Obdachlose (15.10.11 03: 08) [34]
>
> "stack1" und "stack2" müssen getauscht werden =)

Richtig :)


> Hermann © (15.10.11 03: 07) [33]
> Ich überlege, wie ich die 8-Bytenummer eindeutig ausdrücken kann
> 13-stellige Dezimalzahl.

Nun, das ist wirklich schwierig, mehr als eine Acht-Byte-Zahl wird als Maximum in Form einer zehnstelligen Dezimalzahl dargestellt, wenn es sich um einen ganzzahligen Typ handelt ...



Rouse_ ©   (2011-10-15 03:19) [37]


> Kerk © (15.10.11 03: 13) [35]
> Ich verstehe, aber Rozych sagt, dass es nicht 4 ist

Ich sagte, dass Sie ein bisschen falsch waren, nicht über die Menge :)



Германн ©   (2011-10-15 03:19) [38]


> Hermann © (15.10.11 03: 07) [33]
>
>

Und es muss auf den "winzigsten" Prozessoren implementiert werden :(
Denn für "große" Chips ist einfach kein Platz!



Германн ©   (2011-10-15 03:27) [39]


> Rouse_ © (15.10.11 03: 17) [36]

>> Hermann © (15.10.11 03: 07) [33]
Zitat1 >> Also denke ich, wie man 8-Bytenummern eindeutig ausdrückt
>> 13-stellige Dezimalzahl.
>
> Nun, es ist wirklich schwer, mehr als eine 8-Byte-Zahl scheint
> Maximum in Form eines zehnstelligen Dezimalpunkts, wenn es sich um eine ganze Zahl handelt
> Art der Rede zu sein ...
>

Sasha, was ist, wenn Sie zählen?
Na ja, oder du verstehst mich nicht.



Rouse_ ©   (2011-10-15 03:30) [40]

Nun, Sie können zählen: Acht Bytes FFFFFFFF enthalten zehn Zeichen 4294967295.



Германн ©   (2011-10-15 04:42) [41]


> Rouse_ © (15.10.11 03: 30) [40]
>
> Nun, Sie können zählen: acht Bytes FFFFFFFF aufnehmen
> zehn Zeichen 4294967295.

Sasha, du musst weniger trinken! Oder mehr schlafen!
Acht Bytes ist FFFFFFFFFFFFFFFF :(



Inovet ©   (2011-10-15 06:02) [42]

> [38] Hermann © (15.10.11 03: 19)
> Und dies muss auf den "winzigsten" Prozessoren implementiert werden :(
> Denn für "große" Mikroschaltungen ist einfach kein Platz!

Nimm keine 8-Bytes, die dich halten.



alexdn ©   (2011-10-15 07:25) [43]

> Rouse_ © (14.10.11 23: 31)
label.visible muss verwendet werden!)



Игорь Шевченко ©   (2011-10-15 11:24) [44]


> Es gibt zwei Code-Optionen:


Das weise Borland in der VCL


> Der folgende Code demonstriert dies deutlich, wobei beide Handler
> gut funktionieren:


Das Beispiel ist falsch



_Юрий   (2011-10-15 11:43) [45]


> Das weise Borland in der VCL


Also habe ich auch gedacht. Es ist ein Albtraum, wenn Sie nur eine Textzeile zeichnen müssen, um in solche Wildnisse einzutauchen.



vuk ©   (2011-10-15 11:46) [46]

zu _Yuri (15.10.11 11: 43) [45]:

> Dies ist ein Albtraum, wenn Sie sich nur zurückziehen müssen
> eine Textzeile, tauchen Sie in solche Wildnisse ein.

Aber nefig "Line Output" an einem solchen Ort.



oldman ©   (2011-10-15 12:04) [47]


> Es muss ermittelt werden, welche von ihnen fehlerhaft funktionieren und warum.


jeder von ihnen arbeitet WAHR!
was ich wollte, habe ich bekommen.



vuk ©   (2011-10-15 12:11) [48]

an oldman © (15.10.11 12: 04) [47]:

> Jeder von ihnen funktioniert WAHR!

Ich sagte, dass aus der Sicht einer korrekt funktionierenden Anwendung beide Optionen Unsinn sind.



oldman ©   (2011-10-15 12:27) [49]


> vuk © (15.10.11 12: 11) [48]


Hmm ... Der Algorithmus funktioniert korrekt.
Und was der Autor aus Sicht wollte - seine Probleme!



vuk ©   (2011-10-15 12:33) [50]

an oldman © (15.10.11 12: 27) [49]:

> Und was der Autor aus Sicht seiner Probleme wollte!

Und ja. Wenn der Autor (t) ra (n) nein möchte, wer ist dann der Arzt für ihn? :)



Inovet ©   (2011-10-15 13:21) [51]

> [42] Inovet © (15.10.11 06: 02)
> Nimm keine 8-Bytes, die dich behalten.

Oder raus in 13 nicht. Gehen Sie in Millionen aus und organisieren Sie den Scallium-Knopf mit visueller Unterscheidung. Zum Beispiel wird die Nummer 8765432109876543210 aussehen
8765432109876
drückte den Knopf
_09876543210_

Sag mir nur wem und warum brauchst du solche Genauigkeit? Und wenn dies keine Zahl ist und es notwendig ist, einige in 8-Bytes dargestellte Informationen in einer bequemen Form anzuzeigen, sind 19-Ziffern höchstwahrscheinlich nicht ausreichend. Lassen Sie sie Parameter hinzufügen oder nacheinander mit dem entsprechenden Symbol neben ihnen anzeigen.



vuk ©   (2011-10-15 13:27) [52]

zu Inovet © (15.10.11 13: 21) [51]:

> Oder geh nicht in 13 aus. Komm in Millionen und auf den Knopf der Muschel
> visuell differenziert organisieren.

Er braucht einen Barcode. Und anscheinend in eine, die nicht passt. Schaltflächen funktionieren dort nicht. Kurz gesagt - das Unheimliche zu schieben. Hier sollte entweder der Schütze oder die Art des Barcodes geändert werden (falls möglich).



картман ©   (2011-10-15 13:49) [53]


> Und anscheinend in eine, die nicht passt.

hash?



vuk ©   (2011-10-15 13:53) [54]

zum cartman © (15.10.11 13: 49) [53]:

> Hash?

Und was machen wir dann damit?



картман ©   (2011-10-15 13:56) [55]

Dies wird der Barcode sein



vuk ©   (2011-10-15 13:59) [56]

Ja, aber wenn Sie die Quelldaten noch benötigen, suchen wir sie mit brachialer Gewalt. Bei Kollisionen hängen wir uns auf.



Inovet ©   (2011-10-15 14:00) [57]

> [52] vuk © (15.10.11 13: 27)
> Er braucht einen Barcode. Und anscheinend in eine, die nicht passt.

Schau was. Na dann

> [42] Inovet © (15.10.11 06: 02)
> Nimm keine 8-Bytes, die dich behalten.

Wofür sind 8-Bytes? Packen Sie in 5.



Inovet ©   (2011-10-15 14:01) [58]

> [57] Inovet © (15.10.11 14: 00)

Aber was hat der Assembler damit zu tun?



картман ©   (2011-10-15 14:04) [59]


> Ja, aber wenn Sie die Quelldaten noch benötigen, suchen wir sie mit brachialer Gewalt.

Nun, es gibt nicht viel zu klären


> Im Falle einer Kollision hängen wir uns auf.

ja



vuk ©   (2011-10-15 14:05) [60]

zu Inovet © (15.10.11 14: 00) [57]:

> Wofür sind 8-Bytes? Packen Sie in 5.

Nicht bei allen Arten von Barcodes können Sie mit anderen Zeichen als Zahlen arbeiten. Deshalb sage ich - hier entweder schießen oder die Art des Codes ändern. Und dort können Sie die Zahl dumm in ein System mit einer anderen Basis destillieren und die Zeichen codieren, die der Barcode unterstützt.



Inovet ©   (2011-10-15 14:11) [61]

> [60] vuk © (15.10.11 14: 05)

Ändern Sie den Code - das ist verständlich. Und 5-Bytes sind genau in 13-Dezimalstellen angegeben. Vielleicht erlauben die Daten das Packen von 8-Bytes in 5.



Игорь Шевченко ©   (2011-10-15 14:54) [62]


> Es muss ermittelt werden, welche von ihnen fehlerhaft funktionieren und warum.


Ich habe beide Optionen eine Zeichenfolge auf dem Formular anzeigen



vuk ©   (2011-10-15 17:14) [63]

an Igor Shevchenko © (15.10.11 14: 54) [62]:

> Bei beiden Optionen wird eine Zeichenfolge im Formular angezeigt

Nur eine Option hat bei mir funktioniert. Es kommt darauf an, ob beide funktionieren oder nicht, ich weiß es nicht, aber beide sind trotzdem falsch. Für den Rest ist es egal. :)



Игорь Шевченко ©   (2011-10-15 17:35) [64]

vuk © (15.10.11 17: 14) [63]


> Ich hatte nur eine Option


Anfangs funktionierte nur eine Option auch für mich. Der Punkt ist nicht, dass beide falsch sind (da stimme ich voll und ganz zu), die Tatsache ist, dass es nützlich ist, die Ursachen für ein solches Verhalten zu finden. Zum Beispiel beim Analysieren des Buggy-Codes einer anderen Person.



vuk ©   (2011-10-15 17:43) [65]

an Igor Shevchenko © (15.10.11 17: 35) [64]:

> dass es nützlich ist, die Gründe für dieses Verhalten zu finden.
> Zum Beispiel beim Analysieren des Buggy-Codes einer anderen Person.

Für einen solchen Code müssen Sie töten, ohne nach Gründen zu suchen. Und dann umschreiben - so wie es funktioniert. Was ist charakteristisch, wenn Sie diesen Code dumm dahin ziehen, wo diese Dinge richtig gemacht werden, dann funktionieren beide Optionen.



знайка   (2011-10-15 17:43) [66]

Schreibst du immer noch mit Fehlern?



Игорь Шевченко ©   (2011-10-15 17:46) [67]

vuk © (15.10.11 17: 43) [65]


> Für einen solchen Code müssen Sie töten, ohne nach Gründen zu suchen


In Bezug auf den Kill - solche Code-Schnipsel erscheinen regelmäßig auf dem Gumsmoker-Blog. Es gibt keine Leichen und es gibt nicht genug Runden :)

Darüber hinaus gibt es noch viele Codefragmente, deren Urheber bestraft werden müssen.



Rouse_ ©   (2011-10-15 17:53) [68]


> vuk © (15.10.11 17: 43) [65]
> Für einen solchen Code müssen Sie töten, ohne nach Gründen zu suchen.

Dieser Code wurde nur aus einem Teil des Arbeitscodes eines anderen Benutzers geboren. Der Autor fragte nur, warum er nicht funktioniert habe. Er musste es verstehen. Er war fassungslos.
Aber der Punkt ist nicht der, der Punkt ist, dass dieser Code die Existenz eines Problems und das Abbestellen klar demonstriert, ohne den Kern des Problems zu verstehen, dass das Schreiben nicht richtig ist - zumindest ist es albern ...



Rouse_ ©   (2011-10-15 17:57) [69]

PS: Ich erinnerte mich an die Aufgabe des Autors. Er plottete die in TMemo eingeführten Formeln und stellte fest, dass Canvas ungültig ist ...



vuk ©   (2011-10-15 18:05) [70]

an Rouse_ © (15.10.11 17: 57) [69]:

> und angesichts der Tatsache, dass Leinwand ungültig ist ...

Dies liegt daran, dass Sie dort zeichnen müssen, wo die Zeichenfläche per Definition gültig ist. Überraschung, was? ;) Wenn wir also sehen, dass sie irgendwo malen, müssen wir nicht verstehen, warum Canvas nicht gültig ist, sondern müssen es neu schreiben.



Rouse_ ©   (2011-10-15 18:21) [71]


> vuk © (15.10.11 18: 05) [70]
> Dies liegt daran, dass Sie dort zeichnen müssen, wo die Zeichenfläche gültig ist
> Definition. Überraschung, was? ;)

Danke, cap :) Und Sie wissen, dass Sie mit bestimmten Parametern des MessageBox-Aufrufs BSOD erhalten können. Überraschung, was? ;) Gibst du eine Empfehlung, die Verwendung dieses IPA zu verbieten? ;)



vuk ©   (2011-10-15 18:26) [72]

an Rouse_ © (15.10.11 18: 21) [71]:

> Danke, Mütze :)

Immer gerne. :)


> Werden Sie eine Empfehlung aussprechen, die Verwendung dieses IPA zu verbieten? ;)

Nein, das werde ich nicht. Und ist das relevant?



Rouse_ ©   (2011-10-15 18:30) [73]


> vuk © (15.10.11 18: 26) [72]
> Nein, das werde ich nicht. Und ist das relevant?

Das unmittelbarste und dort undokumentierte Verhalten von Code.



vuk ©   (2011-10-15 18:41) [74]

an Rouse_ © (15.10.11 18: 30) [73]:

> Sowohl dort als auch dort gibt es undokumentiertes Codeverhalten.

Was für ein undokumentiertes Codeverhalten? Das Formular speziell zum Zeichnen von etwas hat einen speziellen Handler - OnPaint. Dort wird das Universum funktionieren. Und wenn Sie mehr wollen - bearbeiten Sie WM_PAINT nach allen Regeln.



Rouse_ ©   (2011-10-15 18:58) [75]


> vuk © (15.10.11 18: 41) [74]
> Was ist das undokumentierte Verhalten des Codes?

Ok, geben Sie mir einen Proof-Link für die Dokumentation, der besagt, dass beim Ausführen von Memo1.Lines [Index] der Formularbereich neu initialisiert wird ...



vuk ©   (2011-10-15 19:15) [76]

Geben Sie mir zunächst die Dokumentation, in der steht, was richtig ist. Zeichnen Sie an einer beliebigen Stelle. Denn neben eventuellen Nebenwirkungen verschwindet auch der gerenderte Bereich. ;)

Am ausdauerndsten ist Canvas.Lock



Rouse_ ©   (2011-10-15 19:41) [77]


> vuk © (15.10.11 19: 15) [76]
> Geben Sie mir zunächst die Dokumentation, in der steht, was richtig ist
> überall zeichnen.

Naja, eigentlich ist bei dir alles klar, es gibt keinen Beweis, warum bist du dann in einen Streit geraten?
Dokumentation finden Sie unter MSDN, wo die Zeichenfläche korrekt angezeigt wird. Wo es keine Leinwand gibt - zu zeichnen ist nicht richtig, pa getragen?



vuk ©   (2011-10-15 19:50) [78]

an Rouse_ © (15.10.11 19: 41) [77]:

> Dokumentation siehe MSDN, richtig zeichnen
> wo es leinwand gibt.

Und es gibt aus der VCL-Dokumentation:

Forms.TForm.OnPaint
Eine In diesem Fall sollte eine spezielle Bemalung des Formulars erfolgen
...
Wenn Sie die Canvas - Eigenschaft des Formulars außerhalb des OnPaint - Ereignisses verwenden, wird sie gelöscht und vom nächsten OnPaint - Ereignis übernommen.



Rouse_ ©   (2011-10-15 19:55) [79]

Ahh, anscheinend steht irgendwo hier, dass das Zeichnen außerhalb von OnPaint nicht richtig ist :)
Bedrohung und im Allgemeinen, was hat das Rendering, wenn die Ausgangsfrage völlig anders ist?



vuk ©   (2011-10-15 20:09) [80]

an Rouse_ © (15.10.11 19: 55) [79]:

> und generell, was hat das rendern mit der anfänglichen frage zu tun
> ganz anders?

Die erste Frage ist, welche Version des Codes falsch ist und warum. Meine Antwort ist beide falsch (auch wenn die Leinwand blockiert ist), weil sie an der falschen Stelle geschrieben sind. Wenn Sie wo nötig schreiben, sind beide normal. Weil OnPaint so erstellt wurde, dass die Zeichenfläche nicht deaktiviert wird.



Rouse_ ©   (2011-10-15 20:40) [81]


> Meine Antwort ist beide falsch

Haben Sie gesehen, dass TK dies behauptet? :)

> Da OnPaint so erstellt wurde, dass die Zeichenfläche nicht deaktiviert wird
> wurde

Ja, das ist es, aber WM_PAINT wird nicht so gemacht ...



vuk ©   (2011-10-15 20:48) [82]

an Rouse_ © (15.10.11 20: 40) [81]

> Haben Sie gesehen, dass TK dies behauptet? :)

Nein, habe ich nicht. Wenn es im Arbeitsbericht steht - um sicherzustellen, dass es einen Fehler gibt, gibt es keine Fragen an das Programm. Aber dann ist da noch TK. :)


> Ja, das ist es, aber WM_PAINT wird nicht so gemacht ...

Ja Um Window-Message-Handler zu blockieren, ist jedoch bereits ein Verständnis der richtigen Vorgehensweise oder die Bereitschaft erforderlich, nach den Ursachen für seltsame Effekte zu suchen. Wenn es kein Verständnis / Bereitschaft gibt - nicht angeben, hören Sie das Lied "Boots". :)



Rouse_ ©   (2011-10-15 20:55) [83]


> vuk © (15.10.11 20: 48) [82]
> Nein, ich habe nicht gesehen. Wenn es in der Arbeitsaufstellung steht - stellen Sie sicher, dass es einen Fehler gibt,
> dann gibt es keine fragen zum programm. Aber dann ist da noch TK. :)

Nun, die Aufgabe bestand darin, Code zu implementieren, der das undokumentierte Verhalten des TMemo-Steuerelements zeigt. Schreiben Sie eine andere Version des Codes, die Ihrer Meinung nach diese Aufgabe korrekter implementiert.



Игорь Шевченко ©   (2011-10-15 21:03) [84]


> Nun, die Aufgabe bestand darin, Code zu implementieren, der undokumentiert angezeigt wird
> TMemo-Steuerungsverhalten


Welche Seite hat TMemo hier?

procedure TForm1.Button3Click (Sender: TObject); var DC: HDC; S: String; beginne DC: = Canvas.Handle; S: = Button3.Caption; SendMessage (Button2.Handle, WM_NULL, 0, 0); TextOut (DC, 10, 10, PChar (S), Länge (S)); Ende;

Zeichnet nicht

procedure TForm1.Button4Click (Sender: TObject); var DC: HDC; S: String; beginne S: = Button4.Caption; SendMessage (Button2.Handle, WM_NULL, 0, 0); DC: = Canvas.Handle; TextOut (DC, 10, 10, PChar (S), Länge (S)); Ende;

zeichnet



Rouse_ ©   (2011-10-15 21:06) [85]

Privat nur Memo stattdessen
SendMessage (Button2.Handle, WM_NULL, 0, 0)
Sendet eine Nachricht
SendMessage (Memo.Handle, EM_GETLINE, Index, Longint (@Text))
dass tatsächlich die gleichen Eier erhalten werden ...



vuk ©   (2011-10-15 21:11) [86]

an Igor Shevchenko © (15.10.11 21: 03) [84]:

> Welche Seite hat TMemo hier?

Es geht los. Es ist nicht TMemos Fehler, sondern der Nachrichtenverarbeitungszyklus in VCL. Nun, niemand hat versprochen, dass es beim Verarbeiten einer Nachricht, um eine andere zu senden und auf deren Verarbeitung zu warten, keine Nebenwirkungen geben wird.



Игорь Шевченко ©   (2011-10-15 21:13) [87]

Rouse_ © (15.10.11 21: 06) [85]

Ich glaube, dass jeder Aufruf von TWinControl.MainWndProc zwischen Canvas.GetHandle und der Verwendung des resultierenden DC zum Zeichnen einen ähnlichen Effekt haben wird.

Und nun, Achtung, die Frage ist, wie man es auch in diesem Fall zum Zeichnen bringt.



vuk ©   (2011-10-15 21:17) [88]

an Igor Shevchenko © (15.10.11 21: 13) [87]:

> Und nun, Achtung, die Frage ist, wie das geht
> Fall gezogen?

Canvas.Lock habe ich schon erwähnt. Nun, und entsperren Sie es. In OnPaint ist alles gesperrt, sodass dort alles funktioniert.



Rouse_ ©   (2011-10-15 21:21) [89]


> Und nun, Achtung, die Frage ist, wie das geht
> Fall gezogen?

Neben der Auflistung durch vuk über TextOut (Canvas.Handle, natürlich ...



Игорь Шевченко ©   (2011-10-15 21:22) [90]

vuk © (15.10.11 21: 17) [88]

Ich meine, damit sich der Kurvencode der obigen Methoden nicht ändert. Neue Methoden können hinzugefügt werden.



Rouse_ ©   (2011-10-15 21:23) [91]

Und zum Thema Memo habe ich oben gesagt, dass Sie ein anderes Steuerelement verwenden können. In diesem Fall wird das Beispiel mit TMemo geschrieben.



Jeer ©   (2011-10-15 22:24) [92]

Im Allgemeinen glaubte der „Mann“, Eier zu haben, und er erfand einen Weg, das Gegenteil zu beweisen.
Und der "Mann" ist mit Eiern und er weiß, wie man sie richtig benutzt.

PS
Tricks dieser Art sind informativ bedeutungslos.



Юрий Зотов ©   (2011-10-15 23:11) [93]

> Rouse_ © (14.10.11 23: 31)
> Diese Aufgabe wurde gestellt August 2004 Jahr

Rozych, na ja, du hast ein Gedächtnis ...
: O)



Eraser ©   (2011-10-15 23:51) [94]

> [80] vuk © (15.10.11 20: 09)

In den Versprechungen kann der Aufruf an TCanvas nicht nur lauten, etwas darauf zu schreiben. Es ist zum Beispiel möglich zu skizzieren oder zu messen



Германн ©   (2011-10-16 01:00) [95]


> vuk © (15.10.11 14: 05) [60]
>
> zu Inovet © (15.10.11 14: 00) [57]:
>
Quoted1 >> Wofür sind 8-Bytes? Packen Sie in 5.
>
> Nicht bei allen Barcode-Typen können Sie mit anderen Zeichen als arbeiten
> aus zahlen. Warum ich sage - hier entweder schießen oder tippen
> Codeänderung.

Ich entschuldige mich für die offtopic.
Der Kunde hat ein teures Merkan-Zugangssystem. Bei allen Indikationen werden einige Karten mit einem Barcode im EAN-13-Standard verwendet. Ich habe also nicht die Macht, das Format zu ändern. Aber wie Dallas Semiconductors und das Unternehmen, das die Rechte an diesem Produkt von DS gekauft hat, verhalten Sie sich "kompetent". Und 5-Bytes des Schlüsselcodes sind mehr als genug. Für die älteren Bytes sind immer noch Null, d.h. Für alle Schlüssel gleich.
Ich entschuldige mich noch einmal für die offtopic. Ich werde in diesem Thread nicht zu diesem Thema sprechen.



©   (2011-10-16 11:27) [96]


> EAN-13

ean-13 kann auf 12 Bytes reduziert werden
13 © - Prüfziffer, kann berechnet werden
kann helfen



Seiten: 1 2 3 ganze Branche

Forum: "Andere";
Aktuelles Archiv: 2012.02.05;
Herunterladen: [xml.tar.bz2];

nach oben





Speicher: 0.94 MB
Zeit: 0.097 c
15-1318762788
Tuser
2011-10-16 14:59
2012.02.05
Es gibt auch ein Video


15-1319033042
Arrant
2011-10-19 18:04
2012.02.05
Wie erstelle ich eine eigene "Nachrichtenwarteschlange" für den DDE-Server?


15-1317533220
Bruder
2011-10-02 09:27
2012.02.05
Manager - ein wirtschaftliches Spiel


15-1318537803
Jury
2011-10-14 00:30
2012.02.05
Alles Gute zum Geburtstag ! 14 Oktober 2011 Freitag


2-1319450708
Programmierer Dimonych
2011-10-24 14:05
2012.02.05
Analoges wcscpy_s in Delphi 2007





Afrikanisch Albanien Arabisch Armenisch Aserbaidschanisch Baskisch Weißrusse Bulgarisch katalanisch Chinesisch (vereinfacht) Chinesisch (traditionell) kroatisch Tschechisch Dänisch Niederländisch Englisch estnisch Philippinisch Finnisch Französisch
Galicisch Georgisch Deutsch Griechisch haitian Creole Hebräisch Hindi ungarisch isländisch Indonesian irisch Italienisch Japanisch Koreanisch lettisch litauisch Makedonisch Malay Maltesisch Norwegisch
persisch Polnisch Portugiesisch Rumänisch Russisch serbisch Slovakisch Slowenisch Spanisch Suaheli Schwedisch Thai Türkisch Ukrainisch Urdu Vietnamesisch Walisisch Jiddisch Bengalisch Bosnisch
cebuano Esperanto Gujarati Hausa Hmong igbo Javanisch kannada Khmer Laotisch Lateinisch Maorisch Marathi Mongolisch nepali Pandschabi Somalisch Tamilisch Telugu Yoruba
Zulu
Английский Französisch Deutsch Italienisch Португальский Russisch Spanisch