AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Denkanstoss - Memo und viele Zeichen

Ein Thema von turboPASCAL · begonnen am 25. Feb 2007 · letzter Beitrag vom 25. Feb 2007
Antwort Antwort
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

Denkanstoss - Memo und viele Zeichen

  Alt 25. Feb 2007, 07:53
Hi,

ich werde noch Wuschig. Irgend wie komm ich ned drauf wie ich es am einfachsten
Anstelle viele Chars einzeln an ein Memo anhänge.
Meine Lösung ist viel zu langsam.

Delphi-Quellcode:
 l := 1;
  memo1.Text := memo1.Text + format('%6.6s', [#32]);
  for y := 0 to High(a) do
  begin

    ///
    memo1.Text := memo1.Text + format('$%0.2x,', [ a[y] ]); // <--<<<
    ///
    inc(l);


    if l > 20 then // länge der Formatierung
    begin
      memo1.Text := memo1.Text + #13#10;
      memo1.Text := memo1.Text + format('%6.6s', [#32]);
      l := 1;
    end;

    if y mod 100 = 0 then
    begin
      application.ProcessMessages;
      Caption := format('%d of %d',[High(a), y]);
    end;
  end;

  memo1.EndUpdate;

  s := Memo1.Lines[memo1.Lines.Count - 1];
  Delete(s, length(s), 1);
  Memo1.Lines[memo1.Lines.Count - 1] := s;
  memo1.Lines.Add(format(' ); // %d Bytes', [i]));
Die Menge der Zeichen kann bis zu 10 Mio betragen. Ein direktes schreiben ein eine Datei
möchte ich Vermeiden.

Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Denkanstoss - Memo und viele Zeichen

  Alt 25. Feb 2007, 08:06
Hai turboPASCAL,

eine direkte Lösung habe ich um diese Uhrzeit nicht

Aber Du solltest in jedem Fall vermeiden unnötig oft auf das Property Text zugreifen zu müssen. Dies wird bei jedem Zugriff neu zusammen gebaut wenn ich das noch richtig im Kopf habe.
Arbeite also lieber mit einer lokalen Variablen und weise deren Inhalt erst am Ende deiner Funktion dem Property Text zu.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Denkanstoss - Memo und viele Zeichen

  Alt 25. Feb 2007, 08:20
Zitat von Sharky:
eine direkte Lösung habe ich um diese Uhrzeit nicht
Naja, heute Nachmittag hätt ich dann bestimmt eine.

Zitat von Sharky:
Aber Du solltest in jedem Fall vermeiden unnötig oft auf das Property Text zugreifen zu müssen.
Desswegen frag ich doch.


Ja ne, ist klar. ich hab es schon mit einem String versucht, derzeit guck ich mal ob es mit enem Memorystream besser bzw. schneller klappt.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: Denkanstoss - Memo und viele Zeichen

  Alt 25. Feb 2007, 08:24
Ich würde diesen Teil:
Delphi-Quellcode:
    ///
    memo1.Text := memo1.Text + format('$%0.2x,', [ a[y] ]); // <--<<<
    ///
    inc(l);
vielleicht so ändern :
Delphi-Quellcode:
    ///
    memo1.lines.append(format('$%0.2x,', [ a[y] ]));
    ///
    inc(l);
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#5

Re: Denkanstoss - Memo und viele Zeichen

  Alt 25. Feb 2007, 08:40
Lines.Append(); ist fasst das gleiche wie Lines.Add();. Ausserdem wird jeweils eine
neue Zeile erstellt wass ich nicht möchte.

Die Formatierung soll/wird dann so aussehen:
Delphi-Quellcode:
// Include Datei: "RGB_8BIT_TESTBMP.INC"
// Konvertiert von Datei: TESTBMP.BMP

const
  RGB_8Bit_TESTBMP_Width = 12;
  RGB_8Bit_TESTBMP_Height = 12;
  RGB_8Bit_TESTBMP_ByteCount = 144;

  // 12 x 12 Pixel

  RGB_8Bit_TESTBMP : array [0..RGB_8Bit_TESTBMP_ByteCount-1] of Byte =
    (
      $00,$FF,$FF,$00,$00,$00,$00,$00,$00,$FF,$FF,$00,$FF,$FF,$00,$FF,
      $FF,$FF,$FF,$FF,$00,$FF,$FF,$FF,$00,$FF,$FF,$00,$FF,$FF,$00,$FF,
      // [...]
      $FF,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$FF,$FF,$00,$FF,$FF,
      $FF,$FF,$00,$FF,$FF,$00,$FF,$FF,$FF,$00,$00,$FF,$FF,$FF,$00,$FF,
      $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$F9,$FB,$FA,
      $FF,$07,$F8,$00,$00
    ); // 144 Bytes
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
198 Beiträge
 
Delphi XE Professional
 
#6

Re: Denkanstoss - Memo und viele Zeichen

  Alt 25. Feb 2007, 09:48
ungetestet, einfach nur hier so reingetippert:
Delphi-Quellcode:
var s: String;
    y, l: Integer;
begin
  Memo1.BeginUpdate;
  l := 0; s := StringOfChar(32, 6);
  for y:=Low(a) to High(a) do begin
    s := s + Format('$%0.2x', [a[y]]);
    Inc(l);
    if (l >= 20) or (y = High(a)) then begin
      Memo1.Lines.Add(s);
      l := 0; s := StringOfChar(32, 6);
    end if;
  end;
  Memo1.EndUpdate;
end;
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

Re: Denkanstoss - Memo und viele Zeichen

  Alt 25. Feb 2007, 10:42
Stimmt, danke. Warum ist mir das nicht eingefallen ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
25. Feb 2007, 12:31
Dieses Thema wurde von "MrSpock" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi Frage.
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Denkanstoss - Memo und viele Zeichen

  Alt 25. Feb 2007, 13:21
Hallo Matti,

du kannst die benötigte Zeit drastisch reduzieren, indem du mit einer temporären Stringliste arbeitest und deren Inhalt anschließend als Text in das Memo einfügst.

Gruß Hawkeye
  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 06:51 Uhr.
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