Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Zeichenlänge eines Memo zu klein (https://www.delphipraxis.net/177136-zeichenlaenge-eines-memo-zu-klein.html)

Hansi 18. Okt 2013 14:37

Zeichenlänge eines Memo zu klein
 
Hallo,

über folgenden Code lade ich mir eine txt-Datei aus dem Internet in mein einfaches Programm und arbeite dann Zeile für Zeile ab. Seit neuestem gibt es aber ein Problem, dass die Zeilen zu lang für das TMemo sind und der Inhalt einer Zeile umgebrochen wird.
Kann ich die möglichen Zeichenmenge eines TMemo vergrößern?

Code:
url := 'http://www.xxx.com/daten.txt';

  try
    daten := IdHTTP1.get(url);
  Except
    Memo1.Lines.Add('URl existiert nicht!');
    Exit;
  end;

  Memo1.Lines.Add(daten);


  For i := 1 to Memo1.Lines.Count - 1 do begin
  Application.ProcessMessages;
  s := Memo1.Lines[i];
  ...
  end;

Bernhard Geyer 18. Okt 2013 14:41

AW: Zeichenlänge eines Memo zu klein
 
Musst du es denn in ein Memo Laden?
Würde nicht das halten in einer Stringliste reichen?

Hansi 18. Okt 2013 14:44

AW: Zeichenlänge eines Memo zu klein
 
ne es muss kein Memo sein. Ich will es ja nur "temporär" Speichern um es zeilenweise auszulesen

hathor 18. Okt 2013 14:45

AW: Zeichenlänge eines Memo zu klein
 
For i := 1 to Memo1.Lines.Count - 1 do begin
???
For i := 0 to Memo1.Lines.Count - 1 do begin

Memo.Lines[] ist ein StringArray, das wie ein Array 0-indiziert ist.

Ausserdem:
Memo1.Lines.Add(daten);
besser:
Memo1.text:= daten;

Hansi 18. Okt 2013 14:47

AW: Zeichenlänge eines Memo zu klein
 
@hathor: Ja weil in der ersten Zeile die Spaltenüberschriften stehen

WoGe 18. Okt 2013 14:52

AW: Zeichenlänge eines Memo zu klein
 
TListbox ist hier eventuell besser geeignet.
Kein Zeilenumbruch und visuell

Gruß
wo

Perlsau 18. Okt 2013 14:55

AW: Zeichenlänge eines Memo zu klein
 
Die Menge der Zeichen, die ein TMemo aufnehmen kann, ist grundsätzlich nicht begrenzt bzw. findet ihre Grenze am verfügbaren Arbeitsspeicher. Zeilen werden umgebrochen, wenn die ClientWidth des Memos nicht für ihre Darstellung ausreicht. Ich würde dir daher empfehlen, mit einer globalen Stringliste statt mit einem (globalen) Memo zu arbeiten und das Memo gegebenenfalls zur Darstellung einzusetzen, nicht jedoch zur Verarbeitung deiner Daten.

Delphi-Quellcode:
 ...
  PRIVATE
   Var
      FehlerListe : TStrings;


Implementation

Procedure TFormMain.FormCreate(Sender: TObject);
begin
  FehlerListe := TStringList.Create;
end;

Procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  FehlerListe.SaveToFile(Dateiname);
  FehlerListe.Free;
  CanClose := True;
end;

Procedure TForm1.Runterladen;
Var
  Url : String;
begin
 
  ...
  url := 'http://www.xxx.com/daten.txt';

  try
    daten := IdHTTP1.get(url);
    FehlerListe.Append(daten);
  Except
    FehlerListe.Append(e.message + ': "' + url + '"');
    Exit;
  end;



  For i := 0 to FehlerListe.Count - 1 do
  begin
    Application.ProcessMessages;
    s := FehlerListe[i];
    ...
  end;

Hansi 18. Okt 2013 15:19

AW: Zeichenlänge eines Memo zu klein
 
ok vielen Dank...

laden tut; nur bei Fehlerliste.Count ist der Wert immer 1 und nicht die Anzahl an Zeilen.

Perlsau 18. Okt 2013 15:23

AW: Zeichenlänge eines Memo zu klein
 
Welche Anzahl erwartest du denn?

Hansi 18. Okt 2013 15:26

AW: Zeichenlänge eines Memo zu klein
 
exakt 2854 Zeilen ;)
(wenn ich es exportiere nach Excel)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr.
Seite 1 von 3  1 23      

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