hi leutz,...ich danke euch vielmals dass ihr euch so die muehe gemacht habt und mir sooo viel text geschrieben habt
haette nicht gedacht dass ich so viele antworten bekomme^^
naja ok ich geh mal schwer davon aus dass eure codeschnipsel keine fehler beinhalten und dass das problem an mir liegt dass ich es immer noch nicht gebacken bekomme...
ich habe jetzt einfach mal den schnipsel von NamenLozer genommen und versucht einzubauen,... aber ich bekomme es einfach nicht hin._.
ich bin einfach mal hingegangen und hab ne datei namens D.txt erstellt mit ein wenig text drinne und diese als string geladen um NamenLozers schnipsel benutzen zu koennen(weiss leider nich wie ichs anders machen koennte...)
nur wenn ich das ergebniss der suche per memo ausgeben will bekomme ich einen error:
[Error] Unit1.pas(69): Incompatible types: 'String' and 'TStrings'
[Error] Unit1.pas(14): Unsatisfied forward or external declaration: 'TForm1.Button1Click'
[Fatal Error] Project1.dpr(5): Could not compile used
unit 'Unit1.pas'
habt ihr vllcht ne idee wie man es richtig macht?^^
hier mein jetziger source:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure LoadStringFromFile(Filename:
string;
var LoadString:
string);
//Datei im string laden
var fs:TFileStream;
begin
fs:=TFileStream.Create(('
C:\D.txt'), fmOpenRead
or fmShareDenyNone);
SetLength(LoadString, fs.Size);
if fs.size>0
then
fs.
Read(LoadString[1], fs.Size);
fs.Free;
end;
procedure findnumlength(input:
string; output: TStrings; numlength: integer=32);
//NamenLozers schnipsel
var
i,j: integer;
inputlen: integer;
begin
inputlen := length(input);
i := 1;
while i <= inputlen
do
begin
// die nächsten 32 Stellen prüfen
j := 0;
while (i+j<=inputlen)
and (input[j+i]
in ['
0'..'
9'])
and (j<numlength)
do
inc(j);
// Wenn alle 32 Stellen eine Ziffer waren, Zahl hinzufügen
if j = numlength
then
begin
output.Add(copy(input,i,numlength));
end;
// Vorspulen bis zur nächsten Zahl:
while (
not (input[i+j]
in ['
0'..'
9']))
and (i+j<=inputlen)
do
inc(j);
// zur nächstmöglichen Stelle Springen
inc(i,j);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
//gewuenschte memo ausgabe
begin
findnumlength(Memo1.Lines);
end;
end.
thx fuer eure hilfe im vorraus
da o0o